[SERVICES] Properly check again PID
authorPierre Schweitzer <pierre@reactos.org>
Sun, 30 Dec 2018 20:25:48 +0000 (21:25 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Sun, 30 Dec 2018 20:44:40 +0000 (21:44 +0100)
This fixes services not being found.
With that commit and the previous one, I_QueryTagInformation is now fully
functionnal and properly returns service name for a specific tag

base/system/services/database.c

index 60e6d4b..11e0d0d 100644 (file)
@@ -147,7 +147,8 @@ ScmGetServiceImageByImagePath(LPWSTR lpImagePath)
 
 
 DWORD
-ScmGetServiceNameFromTag(PTAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams, PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS *OutParams)
+ScmGetServiceNameFromTag(IN PTAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams,
+                         OUT PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS *OutParams)
 {
     PLIST_ENTRY ServiceEntry;
     PSERVICE CurrentService;
@@ -172,7 +173,7 @@ ScmGetServiceNameFromTag(PTAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams, PTAG_INFO_N
         {
             CurrentImage = CurrentService->lpImage;
             /* And matching the PID */
-            if (CurrentImage->hProcess == (HANDLE)InParams->dwPid)
+            if (CurrentImage->dwProcessId == InParams->dwPid)
             {
                 break;
             }
@@ -220,7 +221,10 @@ Cleanup:
     /* If failure, free allocated memory */
     if (dwError != ERROR_SUCCESS)
     {
-        MIDL_user_free(OutBuffer);
+        if (OutBuffer != NULL)
+        {
+            MIDL_user_free(OutBuffer);
+        }
     }
 
     /* Return error/success */