From 038c3a264bc28721026c5df3dc76dcd26d8ef5df Mon Sep 17 00:00:00 2001 From: Paul Chitescu Date: Wed, 9 Jan 2008 19:58:48 +0200 Subject: [PATCH] advapi32: Accept a NULL lpServiceStatus in ControlService. --- dlls/advapi32/service.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 4c03c1e97f8..7cfd9ea27bf 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1037,26 +1037,29 @@ BOOL WINAPI ControlService( SC_HANDLE hService, DWORD dwControl, return FALSE; } - ret = QueryServiceStatus(hService, lpServiceStatus); - if (!ret) + if (lpServiceStatus) { - ERR("failed to query service status\n"); - SetLastError(ERROR_SERVICE_NOT_ACTIVE); - return FALSE; - } + ret = QueryServiceStatus(hService, lpServiceStatus); + if (!ret) + { + ERR("failed to query service status\n"); + SetLastError(ERROR_SERVICE_NOT_ACTIVE); + return FALSE; + } - switch (lpServiceStatus->dwCurrentState) - { - case SERVICE_STOPPED: - SetLastError(ERROR_SERVICE_NOT_ACTIVE); - return FALSE; - case SERVICE_START_PENDING: - if (dwControl==SERVICE_CONTROL_STOP) - break; - /* fall thru */ - case SERVICE_STOP_PENDING: - SetLastError(ERROR_SERVICE_CANNOT_ACCEPT_CTRL); - return FALSE; + switch (lpServiceStatus->dwCurrentState) + { + case SERVICE_STOPPED: + SetLastError(ERROR_SERVICE_NOT_ACTIVE); + return FALSE; + case SERVICE_START_PENDING: + if (dwControl==SERVICE_CONTROL_STOP) + break; + /* fall thru */ + case SERVICE_STOP_PENDING: + SetLastError(ERROR_SERVICE_CANNOT_ACCEPT_CTRL); + return FALSE; + } } handle = service_open_pipe(hsvc->name);