Fix possible heap-buffer-overflow in archive_string_append_from_wcs on Windows

Fix `archive_string_append_from_wcs_in_codepage` to account for the
already-used portion of the buffer when computing the size of the
remaining buffer for `WideCharToMultiByte` output.
This commit is contained in:
Brad King committed 2020-02-06 15:00:05 -05:00
1 parent 3c780fa9bb
commit 2b8c3abeb3
1 file changed
+2 -1
+2 -1
View File
@@ -744,7 +744,8 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as,
else
dp = &defchar_used;
count = WideCharToMultiByte(to_cp, 0, ws, wslen,
as->s + as->length, (int)as->buffer_length-1, NULL, dp);
as->s + as->length,
(int)as->buffer_length - as->length - 1, NULL, dp);
if (count == 0 &&
GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
/* Expand the MBS buffer and retry. */