Don't leak admin group SID memory
This commit is contained in:
parent
eafbf90d15
commit
84dbd934bf
1 changed files with 7 additions and 6 deletions
13
main.c
13
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");
|
||||
|
|
Loading…
Add table
Reference in a new issue