Erich E. Hoover : advapi32: Fix the initialization of combined DACLs when the new DACL is empty.

Alexandre Julliard julliard at winehq.org
Fri Apr 26 15:31:03 CDT 2019


Module: wine
Branch: master
Commit: 92ee3543e549b02a916c2b6d4bcc9335d35b435e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=92ee3543e549b02a916c2b6d4bcc9335d35b435e

Author: Erich E. Hoover <erich.e.hoover at wine-staging.com>
Date:   Thu Apr 25 11:36:15 2019 +0200

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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/advapi32/security.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index c2c45ac..4b2876d 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -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++)




More information about the wine-cvs mailing list