Module: wine Branch: master Commit: ee18ead5457761c2a330d0005bb5bf1b8711ca80 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ee18ead5457761c2a330d0005b...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Oct 6 15:45:30 2010 +0200
advapi32: Fix a buffer size query in LsaLookupSids.
---
dlls/advapi32/lsa.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c index e12e312..863ddb2 100644 --- a/dlls/advapi32/lsa.c +++ b/dlls/advapi32/lsa.c @@ -483,7 +483,9 @@ NTSTATUS WINAPI LsaLookupSids( (*Names)[i].Name.Length = 0; (*Names)[i].Name.MaximumLength = 0; (*Names)[i].Name.Buffer = NULL; - if (LookupAccountSidW(NULL, Sids[i], NULL, &name_size, NULL, &domain_size, &use)) + + if (!LookupAccountSidW(NULL, Sids[i], NULL, &name_size, NULL, &domain_size, &use) && + GetLastError() == ERROR_INSUFFICIENT_BUFFER) { LSA_UNICODE_STRING domain;
@@ -502,11 +504,11 @@ NTSTATUS WINAPI LsaLookupSids( domain.Buffer = NULL; }
- (*Names)[i].Use = use; (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR); (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR); - (*Names)[i].Name.Buffer = HeapAlloc(GetProcessHeap(),0,name_size * sizeof(WCHAR)); + (*Names)[i].Name.Buffer = HeapAlloc(GetProcessHeap(), 0, name_size * sizeof(WCHAR)); LookupAccountSidW(NULL, Sids[i], (*Names)[i].Name.Buffer, &name_size, domain.Buffer, &domain_size, &use); + (*Names)[i].Use = use;
if (domain_size) (*Names)[i].DomainIndex = build_domain(*ReferencedDomains, &domain);