diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c index 5c3ffc45ab5..fd270ff2744 100644 --- a/dlls/advapi32/lsa.c +++ b/dlls/advapi32/lsa.c @@ -405,7 +405,7 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count, /* use maximum domain count */ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count + - sid_size_total + domainname_size_total))) + sid_size_total + domainname_size_total*sizeof(WCHAR)))) { heap_free(*sids); return STATUS_NO_MEMORY; @@ -440,6 +440,7 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count, if (domain_size) { domain.Length = domain_size * sizeof(WCHAR); + domain.MaximumLength = (domain_size + 1) * sizeof(WCHAR); (*sids)[i].DomainIndex = lsa_reflist_add_domain(*domains, &domain, &domain_data); } } diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c index bffb7c05ff7..b1dcc78142a 100644 --- a/dlls/advapi32/tests/lsa.c +++ b/dlls/advapi32/tests/lsa.c @@ -390,6 +390,8 @@ static void test_LsaLookupSids(void) { ok((char*)list->Domains - (char*)list > 0, "%p, %p\n", list, list->Domains); ok((char*)list->Domains[0].Sid - (char*)list->Domains > 0, "%p, %p\n", list->Domains, list->Domains[0].Sid); + ok(list->Domains[0].Name.MaximumLength > list->Domains[0].Name.Length, "got %d, %d\n", list->Domains[0].Name.MaximumLength, + list->Domains[0].Name.Length); } pLsaFreeMemory(names);