From 5f4a4b35e63ccd6a39d054c29a44da3e6d8bea62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 25 Feb 2018 16:09:21 +0100 Subject: [PATCH] [ADVAPI32_APITEST] Open services & SCM handles with correct access rights; improve a check order. --- .../apitests/advapi32/LockServiceDatabase.c | 2 +- .../rostests/apitests/advapi32/ServiceArgs.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/rostests/apitests/advapi32/LockServiceDatabase.c b/modules/rostests/apitests/advapi32/LockServiceDatabase.c index 850cc4c70aa..d52610a030a 100644 --- a/modules/rostests/apitests/advapi32/LockServiceDatabase.c +++ b/modules/rostests/apitests/advapi32/LockServiceDatabase.c @@ -77,8 +77,8 @@ static void Test_LockUnlockServiceDatabase(void) SetLastError(0xdeadbeef); hLock = LockServiceDatabase(hScm); - ok(hLock != NULL, "hLock = 0x%p, expected non-zero\n", hLock); ok_err(ERROR_SUCCESS); + ok(hLock != NULL, "hLock = 0x%p, expected non-zero\n", hLock); /* Now unlock it */ if (hLock) diff --git a/modules/rostests/apitests/advapi32/ServiceArgs.c b/modules/rostests/apitests/advapi32/ServiceArgs.c index 18d9b82096f..e50ca7bf9fc 100644 --- a/modules/rostests/apitests/advapi32/ServiceArgs.c +++ b/modules/rostests/apitests/advapi32/ServiceArgs.c @@ -236,7 +236,7 @@ static SC_HANDLE register_service(PCWSTR extra_args) trace("service_cmd \"%ls\"\n", service_cmd); - service = CreateServiceW(scm_handle, service_nameW, service_nameW, GENERIC_ALL, + service = CreateServiceW(scm_handle, service_nameW, service_nameW, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, service_cmd, NULL, NULL, NULL, NULL, NULL); if (!service && GetLastError() == ERROR_ACCESS_DENIED) @@ -351,11 +351,11 @@ static void test_runner(BOOLEAN unicode, PCWSTR extra_args, int service_argc, vo thread = CreateThread(NULL, 0, pipe_thread, NULL, 0, NULL); ok(thread != NULL, "CreateThread failed: %lu\n", GetLastError()); if (!thread) - return; + goto Quit; service_handle = register_service(extra_args); if (!service_handle) - return; + goto Quit; //trace("starting...\n"); @@ -370,15 +370,20 @@ static void test_runner(BOOLEAN unicode, PCWSTR extra_args, int service_argc, vo CloseServiceHandle(service_handle); ok(WaitForSingleObject(thread, 10000) == WAIT_OBJECT_0, "Timeout waiting for thread\n"); - CloseHandle(thread); - CloseHandle(pipe_handle); + +Quit: + if (thread) + CloseHandle(thread); + + if (pipe_handle != INVALID_HANDLE_VALUE) + CloseHandle(pipe_handle); } START_TEST(ServiceArgs) { argc = winetest_get_mainargs(&argv); - scm_handle = OpenSCManagerW(NULL, NULL, GENERIC_ALL); + scm_handle = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS); ok(scm_handle != NULL, "OpenSCManager failed: %lu\n", GetLastError()); if (!scm_handle) {