diff options
author | Tim Jenssen <tim.jenssen@digia.com> | 2013-05-28 16:17:23 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2013-05-28 17:20:28 +0200 |
commit | c1743392e2453755d1807c3515f1377b5a5f537a (patch) | |
tree | d6f5302d8812cf9ef57dc947cfa1e8f7a4c59be6 /src | |
parent | 3f84f8769be83e5375e4a4e4992c23963a02cb01 (diff) |
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 <karsten.heimrich@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/adminauthorization_win.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
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) |