SuIsLogonSid 函数 Bug
Closed this issue · 2 comments
MeeSong commented
/*
SuIsLogonSid函数判断指定的SID是否为登录SID。
The SuIsLogonSid function determines whether the specified SID is a logon
SID.
*/
static bool WINAPI SuIsLogonSid(
_In_ PSID pSid)
{
// 获取pSid的SID_IDENTIFIER_AUTHORITY结构
PSID_IDENTIFIER_AUTHORITY pSidAuth = RtlIdentifierAuthoritySid(pSid);
// 如果不符合SID_IDENTIFIER_AUTHORITY结构长度,则返回false
if (!memcmp(pSidAuth, &SIA_NT, SIA_Length)) return false;
// 判断SID是否属于Logon SID
return (*RtlSubAuthorityCountSid(pSid) == SECURITY_LOGON_IDS_RID_COUNT
&& *RtlSubAuthoritySid(pSid, 0) == SECURITY_LOGON_IDS_RID);
}
memcmp 的返回值是 :
相等: 0
小于: < 0
大于: > 0
所以上面代码的 if 逻辑应该是这样, 去掉 !
if (memcmp(pSidAuth, &SIA_NT, SIA_Length)) return false;
MouriNaruto commented
嗯,收到了,等我修复
MouriNaruto commented
已修复