[ros-diffs] [cwittich] 39434: add some more error checking

cwittich at svn.reactos.org cwittich at svn.reactos.org
Fri Feb 6 09:51:51 CET 2009


Author: cwittich
Date: Fri Feb  6 02:51:51 2009
New Revision: 39434

URL: http://svn.reactos.org/svn/reactos?rev=39434&view=rev
Log:
add some more error checking

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

Modified: trunk/reactos/dll/win32/advapi32/service/scm.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/service/scm.c?rev=39434&r1=39433&r2=39434&view=diff
==============================================================================
--- trunk/reactos/dll/win32/advapi32/service/scm.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/advapi32/service/scm.c [iso-8859-1] Fri Feb  6 02:51:51 2009
@@ -769,6 +769,12 @@
     TRACE("CreateServiceW() called\n");
     TRACE("%p %S %S\n", hSCManager, 
           lpServiceName, lpDisplayName);
+
+    if (!hSCManager)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return NULL;
+    }
 
     /* Calculate the Dependencies length*/
     if (lpDependencies != NULL)
@@ -1132,6 +1138,12 @@
 
     TRACE("EnumServicesStatusW() called\n");
 
+    if (!hSCManager)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
     RpcTryExcept
     {
         dwError = REnumServicesStatusW((SC_RPC_HANDLE)hSCManager,
@@ -1398,6 +1410,12 @@
 
     TRACE("GetServiceDisplayNameW() called\n");
 
+    if (!hSCManager)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
     if (!lpDisplayName)
         *lpcchBuffer = 0;
 
@@ -1497,7 +1515,22 @@
 
     TRACE("GetServiceKeyNameW() called\n");
 
+    if (!hSCManager)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
     if (!lpDisplayName)
+    {
+        SetLastError(ERROR_INVALID_ADDRESS);
+
+        if (!lpServiceName)
+            *lpcchBuffer = 1;
+        return FALSE;
+    }
+
+    if (!lpServiceName)
         *lpcchBuffer = 0;
 
     RpcTryExcept
@@ -1757,6 +1790,12 @@
     TRACE("OpenServiceW(%p, %S, %lx)\n",
            hSCManager, lpServiceName, dwDesiredAccess);
 
+    if (!hSCManager)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return NULL;
+    }
+
     RpcTryExcept
     {
         /* Call to services.exe using RPC */



More information about the Ros-diffs mailing list