From: Joseph C. Lehner Date: Wed, 18 Jan 2017 12:22:31 +0000 (+0100) Subject: Don't leak admin group SID memory X-Git-Tag: v0.9.10~3 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=84dbd934bf762629c131d577cb7c42eb780606d3;p=oweals%2Fnmrpflash.git Don't leak admin group SID memory --- diff --git a/main.c b/main.c index 66d7d80..54cad4c 100644 --- a/main.c +++ b/main.c @@ -84,22 +84,23 @@ void usage(FILE *fp) void require_admin() { SID_IDENTIFIER_AUTHORITY auth = SECURITY_NT_AUTHORITY; - PSID adminGroup = NULL; - BOOL success = AllocateAndInitializeSid( + PSID group = NULL; + BOOL admin, success = AllocateAndInitializeSid( &auth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, - 0, 0, 0, 0, 0, 0, &adminGroup + 0, 0, 0, 0, 0, 0, &group ); if (success) { - if (CheckTokenMembership(NULL, adminGroup, &success)) { - if (!success) { + success = CheckTokenMembership(NULL, group, &admin); + FreeSid(group); + if (success) { + if (!admin) { fprintf(stderr, "Error: must be run as administrator\n"); exit(1); } else { return; } } - FreeSid(adminGroup); } fprintf(stderr, "Warning: failed to check administrator privileges\n");