From c1743392e2453755d1807c3515f1377b5a5f537a Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 28 May 2013 16:17:23 +0200 Subject: use right types to interact with WinAPI - the problem is that a bool variable is not big enough to get the result of CheckTokenMembership this causes in random memory corruptions Change-Id: I16d07ae9af1e5991990ed010a8c4fdb463e5e833 Reviewed-by: Karsten Heimrich --- src/libs/installer/adminauthorization_win.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/libs/installer') diff --git a/src/libs/installer/adminauthorization_win.cpp b/src/libs/installer/adminauthorization_win.cpp index 151fef953..a985616c9 100644 --- a/src/libs/installer/adminauthorization_win.cpp +++ b/src/libs/installer/adminauthorization_win.cpp @@ -81,7 +81,7 @@ bool AdminAuthorization::authorize() bool AdminAuthorization::hasAdminRights() { SID_IDENTIFIER_AUTHORITY authority = { SECURITY_NT_AUTHORITY }; - PSID adminGroup; + PSID adminGroup = 0; // Initialize SID. if (!AllocateAndInitializeSid(&authority, 2, @@ -91,12 +91,12 @@ bool AdminAuthorization::hasAdminRights() &adminGroup)) return false; - bool isInAdminGroup = false; - if (!CheckTokenMembership(0, adminGroup, (int*)&isInAdminGroup)) - isInAdminGroup = false; + BOOL isInAdminGroup = FALSE; + if (CheckTokenMembership(0, adminGroup, &isInAdminGroup)) + isInAdminGroup = TRUE; FreeSid(adminGroup); - return isInAdminGroup; + return (isInAdminGroup == BOOL(TRUE)); } bool AdminAuthorization::execute(QWidget *, const QString &program, const QStringList &arguments) -- cgit v1.2.3