advapi32: Fix the initialization of combined DACLs when the new DACL is empty.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=38423 Signed-off-by: Vijay Kiran Kamuju <infyquest@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9aac7ca191
commit
92ee3543e5
|
@ -5966,6 +5966,7 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
|
||||||
|
|
||||||
static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
|
static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
|
||||||
{
|
{
|
||||||
|
NTSTATUS status;
|
||||||
ACL *combined;
|
ACL *combined;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -5974,8 +5975,23 @@ static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
|
||||||
if (!combined)
|
if (!combined)
|
||||||
return STATUS_NO_MEMORY;
|
return STATUS_NO_MEMORY;
|
||||||
|
|
||||||
memcpy(combined, child, child->AclSize);
|
status = RtlCreateAcl(combined, parent->AclSize+child->AclSize, ACL_REVISION);
|
||||||
combined->AclSize = child->AclSize+parent->AclSize;
|
if (status != STATUS_SUCCESS)
|
||||||
|
{
|
||||||
|
heap_free(combined);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* copy the new ACEs */
|
||||||
|
for (i=0; i<child->AceCount; i++)
|
||||||
|
{
|
||||||
|
ACE_HEADER *ace;
|
||||||
|
|
||||||
|
if (!GetAce(child, i, (void*)&ace))
|
||||||
|
continue;
|
||||||
|
if (!AddAce(combined, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
|
||||||
|
WARN("error adding new ACE\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* copy the inherited ACEs */
|
/* copy the inherited ACEs */
|
||||||
for (i=0; i<parent->AceCount; i++)
|
for (i=0; i<parent->AceCount; i++)
|
||||||
|
|
Loading…
Reference in New Issue