From 04cccae9438691fa3042bda7a7d7fadbcbcf3dfa Mon Sep 17 00:00:00 2001 From: Paul Bryan Roberts Date: Sat, 18 Oct 2008 20:51:58 +0100 Subject: [PATCH] advapi32: LookupAccountNameW() - use ACCOUNT_SIDS domain and name_use fields for well known SIDS. --- dlls/advapi32/security.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 87dca9beddb..77009af3ab8 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -2536,11 +2536,30 @@ BOOL WINAPI LookupAccountNameW( LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSI { if (!strcmpW(lpAccountName, ACCOUNT_SIDS[i].account)) { - if (*cchReferencedDomainName) - *ReferencedDomainName = '\0'; - *cchReferencedDomainName = 0; - *peUse = SidTypeWellKnownGroup; - return CreateWellKnownSid(ACCOUNT_SIDS[i].type, NULL, Sid, cbSid); + ret = CreateWellKnownSid(ACCOUNT_SIDS[i].type, NULL, Sid, cbSid); + + domainName = ACCOUNT_SIDS[i].domain; + nameLen = strlenW(domainName); + + if (*cchReferencedDomainName <= nameLen && ReferencedDomainName) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + nameLen += 1; + ret = FALSE; + } + else if (ReferencedDomainName && domainName) + { + strcpyW(ReferencedDomainName, domainName); + } + + *cchReferencedDomainName = nameLen; + + if (ret) + { + *peUse = ACCOUNT_SIDS[i].name_use; + } + + return ret; } }