Nikolay Sivov : advapi32: Allocate temporary name buffer once.

Alexandre Julliard julliard at winehq.org
Mon Apr 29 13:55:24 CDT 2013


Module: wine
Branch: master
Commit: 397c2200a6b76b274a43b64bf9cb065a5251848b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=397c2200a6b76b274a43b64bf9cb065a5251848b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Apr 29 09:30:24 2013 +0400

advapi32: Allocate temporary name buffer once.

---

 dlls/advapi32/lsa.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index fd270ff..255704b 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -371,6 +371,7 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
 {
     ULONG i, sid_size_total = 0, domain_size_max = 0, size, domainname_size_total = 0;
     ULONG sid_size, domain_size, mapped;
+    LSA_UNICODE_STRING domain;
     BOOL handled = FALSE;
     char *domain_data;
     SID_NAME_USE use;
@@ -414,13 +415,11 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
     (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
     domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count;
 
+    domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR));
     for (i = 0; i < count; i++)
     {
-        LSA_UNICODE_STRING domain;
-
         domain.Length = domain_size_max*sizeof(WCHAR);
         domain.MaximumLength = domain_size_max*sizeof(WCHAR);
-        domain.Buffer = heap_alloc(domain.Length);
 
         (*sids)[i].Use = SidTypeUnknown;
         (*sids)[i].DomainIndex = -1;
@@ -444,9 +443,8 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
                 (*sids)[i].DomainIndex = lsa_reflist_add_domain(*domains, &domain, &domain_data);
             }
         }
-
-        heap_free(domain.Buffer);
     }
+    heap_free(domain.Buffer);
 
     if (mapped == count) return STATUS_SUCCESS;
     if (mapped > 0 && mapped < count) return STATUS_SOME_NOT_MAPPED;




More information about the wine-cvs mailing list