diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index c8aeb3679b7ac8aa6b874a0555a317ab94ee9af7..3d43f7f2309bc707bfa0e1b7bff219a12f349c01 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -202,6 +202,15 @@ CopySid( DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid ) BOOL WINAPI IsValidSid( PSID pSid ) { + if (IsBadReadPtr(pSid, 4)) + { + WARN_(security)("(%p): invalid pointer!", pSid); + return FALSE; + } + + if (pSid->SubAuthorityCount > SID_MAX_SUB_AUTHORITIES) + return FALSE; + if (!pSid || pSid->Revision != SID_REVISION) return FALSE;