From dab840147a4c17e4cd3beafd285460fc0fe68258 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 7 Feb 2011 23:16:29 +0000 Subject: [PATCH 1/1] [USETUP] 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 --- reactos/base/setup/usetup/cabinet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/base/setup/usetup/cabinet.c b/reactos/base/setup/usetup/cabinet.c index 0f7b0ef7a64..25357a41cbb 100644 --- a/reactos/base/setup/usetup/cabinet.c +++ b/reactos/base/setup/usetup/cabinet.c @@ -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); -- 2.17.1