[ros-diffs] [dgorbachev] 26672: Fix a bug in ScServiceMainStub(), add more checks.

dgorbachev at svn.reactos.org dgorbachev at svn.reactos.org
Thu May 10 12:13:02 CEST 2007


Author: dgorbachev
Date: Thu May 10 14:13:01 2007
New Revision: 26672

URL: http://svn.reactos.org/svn/reactos?rev=26672&view=rev
Log:
Fix a bug in ScServiceMainStub(), add more checks.

Modified:
    trunk/reactos/dll/win32/advapi32/service/sctrl.c

Modified: trunk/reactos/dll/win32/advapi32/service/sctrl.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/service/sctrl.c?rev=26672&r1=26671&r2=26672&view=diff
==============================================================================
--- trunk/reactos/dll/win32/advapi32/service/sctrl.c (original)
+++ trunk/reactos/dll/win32/advapi32/service/sctrl.c Thu May 10 14:13:01 2007
@@ -101,7 +101,7 @@
     lpPtr = lpService->Arguments;
     while (*lpPtr)
     {
-        DPRINT("arg: %S\n", *lpPtr);
+        DPRINT("arg: %S\n", lpPtr);
         dwLen = wcslen(lpPtr) + 1;
         dwArgCount++;
         dwLength += dwLen;
@@ -153,9 +153,15 @@
                                          0,
                                          NULL,
                                          NULL);
+        if (AnsiLength == 0)
+            return ERROR_INVALID_PARAMETER; /* ? */
+
         AnsiString = HeapAlloc(GetProcessHeap(),
                                0,
-                               AnsiLength);
+                               AnsiLength + 1);
+        if (AnsiString == NULL)
+            return ERROR_OUTOFMEMORY;
+
         WideCharToMultiByte(CP_ACP,
                             0,
                             lpService->Arguments,
@@ -165,9 +171,13 @@
                             NULL,
                             NULL);
 
+        AnsiString[AnsiLength] = ANSI_NULL;
+
         lpArgVector = HeapAlloc(GetProcessHeap(),
                                 0,
                                 (dwArgCount + 1) * sizeof(LPSTR));
+        if (lpArgVector == NULL)
+            return ERROR_OUTOFMEMORY;
 
         dwArgCount = 0;
         Ptr = AnsiString;




More information about the Ros-diffs mailing list