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