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/... ============================================================================== --- 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 */