Author: gadamopoulos
Date: Sat Feb 25 18:26:05 2012
New Revision: 55857

URL: http://svn.reactos.org/svn/reactos?rev=55857&view=rev
Log:
[win32k]
- null terminate DesktopObject->pDeskInfo->szDesktopName and 
WindowStationObject->Name
- null terminate the buffer when NtUserGetObjectInformation is called with 
UOI_NAME parameter
- should fix a random failure in user32:desktop tests

Modified:
    trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
    trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c?rev=55857&r1=55856&r2=55857&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] Sat Feb 
25 18:26:05 2012
@@ -845,7 +845,7 @@
    {
       ProbeForRead( ObjectAttributes, sizeof(OBJECT_ATTRIBUTES),  1);
 
-      Status = IntSafeCopyUnicodeString(&DesktopName, 
ObjectAttributes->ObjectName);
+      Status = IntSafeCopyUnicodeStringTerminateNULL(&DesktopName, 
ObjectAttributes->ObjectName);
    }
    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
    {
@@ -886,7 +886,7 @@
        RETURN(NULL);
    }
 
-   DesktopInfoSize = sizeof(DESKTOPINFO) + DesktopName.Length;
+   DesktopInfoSize = sizeof(DESKTOPINFO) + DesktopName.Length + sizeof(WCHAR);
 
    DesktopObject->pDeskInfo = RtlAllocateHeap(DesktopObject->pheapDesktop,
                                               HEAP_NO_SERIALIZE,
@@ -906,7 +906,7 @@
    DesktopObject->pDeskInfo->pvDesktopLimit = 
(PVOID)((ULONG_PTR)DesktopHeapSystemBase + HeapSize);
    RtlCopyMemory(DesktopObject->pDeskInfo->szDesktopName,
                  DesktopName.Buffer,
-                 DesktopName.Length);
+                 DesktopName.Length + sizeof(WCHAR));
 
    /* Initialize some local (to win32k) desktop state. */
    InitializeListHead(&DesktopObject->PtiList);

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c?rev=55857&r1=55856&r2=55857&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] Sat Feb 
25 18:26:05 2012
@@ -364,7 +364,7 @@
    _SEH2_TRY
    {
       ProbeForRead( ObjectAttributes, sizeof(OBJECT_ATTRIBUTES), 1);
-      Status = IntSafeCopyUnicodeString(&WindowStationName, 
ObjectAttributes->ObjectName);
+      Status = IntSafeCopyUnicodeStringTerminateNULL(&WindowStationName, 
ObjectAttributes->ObjectName);
    }
    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
    {
@@ -653,14 +653,14 @@
       case UOI_NAME:
          if (WinStaObject != NULL)
          {
-            pvData = ((PUNICODE_STRING)GET_DESKTOP_NAME(WinStaObject))->Buffer;
-            nDataSize = 
((PUNICODE_STRING)GET_DESKTOP_NAME(WinStaObject))->Length + 2;
+             pvData = WinStaObject->Name.Buffer;
+             nDataSize = WinStaObject->Name.Length + sizeof(WCHAR);
             Status = STATUS_SUCCESS;
          }
          else if (DesktopObject != NULL)
          {
-            pvData = 
((PUNICODE_STRING)GET_DESKTOP_NAME(DesktopObject))->Buffer;
-            nDataSize = 
((PUNICODE_STRING)GET_DESKTOP_NAME(DesktopObject))->Length + 2;
+             pvData = DesktopObject->pDeskInfo->szDesktopName;
+            nDataSize = (wcslen(DesktopObject->pDeskInfo->szDesktopName) + 1) 
* sizeof(WCHAR);
             Status = STATUS_SUCCESS;
          }
          else
@@ -671,13 +671,13 @@
          if (WinStaObject != NULL)
          {
             pvData = L"WindowStation";
-            nDataSize = (wcslen(pvData) + 1) * sizeof(WCHAR);
+            nDataSize = sizeof(L"WindowStation");
             Status = STATUS_SUCCESS;
          }
          else if (DesktopObject != NULL)
          {
             pvData = L"Desktop";
-            nDataSize = (wcslen(pvData) + 1) * sizeof(WCHAR);
+            nDataSize = sizeof(L"Desktop");
             Status = STATUS_SUCCESS;
          }
          else


Reply via email to