forked from Mirrors/wine-wine
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>
(cherry picked from commit 92ee3543e5
)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
oldstable
parent
dfcef81b5b
commit
97cf4f154d
|
@ -5966,6 +5966,7 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
|
|||
|
||||
static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
|
||||
{
|
||||
NTSTATUS status;
|
||||
ACL *combined;
|
||||
int i;
|
||||
|
||||
|
@ -5974,8 +5975,23 @@ static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
|
|||
if (!combined)
|
||||
return STATUS_NO_MEMORY;
|
||||
|
||||
memcpy(combined, child, child->AclSize);
|
||||
combined->AclSize = child->AclSize+parent->AclSize;
|
||||
status = RtlCreateAcl(combined, parent->AclSize+child->AclSize, ACL_REVISION);
|
||||
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 */
|
||||
for (i=0; i<parent->AceCount; i++)
|
||||
|
|
Loading…
Reference in New Issue