Properly check return value of OpenProcessToken()
authorMaks Naumov <maksqwe1@ukr.net>
Tue, 10 Feb 2015 07:43:45 +0000 (09:43 +0200)
committerMaks Naumov <maksqwe1@ukr.net>
Tue, 10 Feb 2015 07:43:45 +0000 (09:43 +0200)
Return type of OpenProcessToken() is BOOL.

src/utilcode/securitywrapper.cpp

index 249fe494e11937e9947cb31b776976af8b1ea161..1fa8fca54a8f5a0b45bec8a09f5f41a40ed62b8d 100644 (file)
@@ -419,16 +419,11 @@ HRESULT SidBuffer::InitFromProcessAppContainerSidNoThrow(DWORD pid)
         goto exit;
     }
     HANDLE hToken = NULL;
-    hr = OpenProcessToken(hProcess, TOKEN_QUERY, &hToken);
-    if (FAILED(hr))
+    if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken))
     {
+        hr = HRESULT_FROM_GetLastError();
         goto exit;
     }
-    else
-    {
-        hr = S_OK; // not sure why, but OpenProcessToken can return S_FALSE 
-                   // we don't want to return S_FALSE by accident
-    }
 
     // Define new TOKEN_INFORMATION_CLASS/ TOKEN_APPCONTAINER_INFORMATION members for Win8 since they are not in the DevDiv copy of WinSDK yet
     typedef enum _TOKEN_INFORMATION_CLASS_WIN8 {