Nikolay Sivov : advapi32: Allocate temporary name buffer once.
Module: wine Branch: master Commit: 397c2200a6b76b274a43b64bf9cb065a5251848b URL: http://source.winehq.org/git/wine.git/?a=commit;h=397c2200a6b76b274a43b64bf9... Author: Nikolay Sivov <nsivov(a)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;
participants (1)
-
Alexandre Julliard