[ros-diffs] [rharabien] 54061: [RTL] - Make sure RtlInitUnicodeString(Ex) don't set odd length. Fixes ntdll:rtlstr winetest.

rharabien at svn.reactos.org rharabien at svn.reactos.org
Sun Oct 9 09:55:41 UTC 2011


Author: rharabien
Date: Sun Oct  9 09:55:40 2011
New Revision: 54061

URL: http://svn.reactos.org/svn/reactos?rev=54061&view=rev
Log:
[RTL] - Make sure RtlInitUnicodeString(Ex) don't set odd length. Fixes ntdll:rtlstr winetest.

Modified:
    trunk/reactos/lib/rtl/unicode.c

Modified: trunk/reactos/lib/rtl/unicode.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/unicode.c?rev=54061&r1=54060&r2=54061&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/unicode.c [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/unicode.c [iso-8859-1] Sun Oct  9 09:55:40 2011
@@ -584,11 +584,12 @@
     IN PCWSTR SourceString)
 {
     SIZE_T Size;
+    CONST SIZE_T MaxSize = (MAXUSHORT & ~1) - sizeof(WCHAR); // an even number
 
     if (SourceString)
     {
         Size = wcslen(SourceString) * sizeof(WCHAR);
-        if (Size > (MAXUSHORT - sizeof(WCHAR))) Size = MAXUSHORT - sizeof(WCHAR);
+        if (Size > MaxSize) Size = MaxSize;
         DestinationString->Length = (USHORT)Size;
         DestinationString->MaximumLength = (USHORT)Size + sizeof(WCHAR);
     }
@@ -611,11 +612,12 @@
     IN PCWSTR SourceString)
 {
     SIZE_T Size;
+    CONST SIZE_T MaxSize = (MAXUSHORT & ~1) - sizeof(WCHAR); // an even number
 
     if (SourceString)
     {
         Size = wcslen(SourceString) * sizeof(WCHAR);
-        if (Size > (MAXUSHORT - sizeof(WCHAR))) return STATUS_NAME_TOO_LONG;
+        if (Size > MaxSize) return STATUS_NAME_TOO_LONG;
         DestinationString->Length = (USHORT)Size;
         DestinationString->MaximumLength = (USHORT)Size + sizeof(WCHAR);
     }




More information about the Ros-diffs mailing list