Hans Leidekker (@hans) commented about programs/whoami/main.c:
}return FALSE;
- result = GetUserNameExW(NameSamCompatible, NULL, &size);
- if (result || GetLastError() != ERROR_MORE_DATA)
- result = GetUserNameExW(name_format, *name, &size);
- if (!result)
- {
ERR("GetUserNameExW failed, error %ld\n", GetLastError());
return FALSE;
- }
- return TRUE;
+}
+static BOOL get_process_sid(PSID *sid)
get_process_sid() could be simplified like this: ``` static SID *get_process_sid(void) { HANDLE token_handle; DWORD buf[256]; /* GetTokenInformation wants a dword-aligned buffer */ TOKEN_USER *token_user = (TOKEN_USER *)buf; DWORD token_user_len; SID *ret;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token_handle)) return NULL; if (!GetTokenInformation(token_handle, TokenUser, (void *)buf, sizeof(buf), &token_user_len)) { CloseHandle(token_handle); return NULL; } CloseHandle(token_handle);
token_user_len = GetLengthSid(token_user->User.Sid); if (!(ret = malloc(token_user_len))) return NULL; if (CopySid(token_user_len, ret, token_user->User.Sid)) return ret; free(ret); return NULL; } ```