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

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);