Hans Leidekker : advapi32: Fix a buffer size query in LsaLookupSids.

Alexandre Julliard julliard at winehq.org
Thu Dec 2 16:30:49 CST 2010


Module: wine
Branch: stable
Commit: 11d86f08dd12a565710be6b46622cac99ac5935b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=11d86f08dd12a565710be6b46622cac99ac5935b

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Oct  6 15:45:30 2010 +0200

advapi32: Fix a buffer size query in LsaLookupSids.
(cherry picked from commit ee18ead5457761c2a330d0005bb5bf1b8711ca80)

---

 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);




More information about the wine-cvs mailing list