Module: wine Branch: master Commit: 04cccae9438691fa3042bda7a7d7fadbcbcf3dfa URL: http://source.winehq.org/git/wine.git/?a=commit;h=04cccae9438691fa3042bda7a7...
Author: Paul Bryan Roberts pbronline-wine@yahoo.co.uk Date: Sat Oct 18 20:51:58 2008 +0100
advapi32: LookupAccountNameW() - use ACCOUNT_SIDS domain and name_use fields for well known SIDS.
---
dlls/advapi32/security.c | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 87dca9b..77009af 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; } }