Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes.
Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...).

svn path=/trunk/; revision=50615
This commit is contained in:
Pierre Schweitzer
2011-02-07 23:16:29 +00:00
parent ff11a09b02
commit dab840147a
+1 -1
View File
@@ -890,7 +890,7 @@ CabinetExtractFile(PCAB_SEARCH Search)
RtlInitAnsiString(&AnsiString, Search->File->FileName);
wcscpy(DestName, DestPath);
UnicodeString.MaximumLength = sizeof(DestName) - wcslen(DestName);
UnicodeString.MaximumLength = sizeof(DestName) - wcslen(DestName) * sizeof(WCHAR);
UnicodeString.Buffer = DestName + wcslen(DestName);
UnicodeString.Length = 0;
RtlAnsiStringToUnicodeString(&UnicodeString, &AnsiString, FALSE);