]> git.saurik.com Git - wxWidgets.git/commitdiff
close the handle returned by OpenProcessToken() (fixes #10129)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Dec 2008 02:34:34 +0000 (02:34 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Dec 2008 02:34:34 +0000 (02:34 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/utils.cpp

index f6097b58010749c10b63f4e1f38768e0e2f4deec..328839265aec279761462467f174546c0e2b17b1 100644 (file)
@@ -944,18 +944,23 @@ bool wxShutdown(int WXUNUSED_IN_WINCE(flags))
             TOKEN_PRIVILEGES tkp;
 
             // Get the LUID for the shutdown privilege.
-            ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
-                                   &tkp.Privileges[0].Luid);
+            bOK = ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
+                                         &tkp.Privileges[0].Luid) != 0;
 
-            tkp.PrivilegeCount = 1;  // one privilege to set
-            tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
+            if ( bOK )
+            {
+                tkp.PrivilegeCount = 1;  // one privilege to set
+                tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
+
+                // Get the shutdown privilege for this process.
+                ::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
+                                        (PTOKEN_PRIVILEGES)NULL, 0);
 
-            // Get the shutdown privilege for this process.
-            ::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
-                                    (PTOKEN_PRIVILEGES)NULL, 0);
+                // Cannot test the return value of AdjustTokenPrivileges.
+                bOK = ::GetLastError() == ERROR_SUCCESS;
+            }
 
-            // Cannot test the return value of AdjustTokenPrivileges.
-            bOK = ::GetLastError() == ERROR_SUCCESS;
+            ::CloseHandle(hToken);
         }
     }