[PATCH] remove process token leak

Marcus Meissner marcus at jet.franken.de
Sun Jan 20 10:58:40 CST 2008


Hi,

From: Christoph von Wittich <Christoph at ApiViewer.de>

Christoph von Wittich reported this handle leak in #winehackers
and had a patch for.

Ciao, Marcus
---
 dlls/msi/registry.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c
index 12d2c9a..bf06d9d 100644
--- a/dlls/msi/registry.c
+++ b/dlls/msi/registry.c
@@ -478,13 +478,17 @@ static UINT get_user_sid(LPWSTR *usersid)
         return ERROR_FUNCTION_FAILED;
 
     size = sizeof(buf);
-    if (!GetTokenInformation(token, TokenUser, (void *)buf, size, &size))
+    if (!GetTokenInformation(token, TokenUser, (void *)buf, size, &size)) {
+        CloseHandle(token);
         return ERROR_FUNCTION_FAILED;
+    }
 
     user = (PTOKEN_USER)buf;
-    if (!ConvertSidToStringSidW(user->User.Sid, usersid))
+    if (!ConvertSidToStringSidW(user->User.Sid, usersid)) {
+        CloseHandle(token);
         return ERROR_FUNCTION_FAILED;
-
+    }
+    CloseHandle(token);
     return ERROR_SUCCESS;
 }
 
-- 
1.5.2.4



More information about the wine-patches mailing list