James Hawkins : Revert "advapi32: Free descriptor if it isn' t returned from GetSecurityInfo().".

Alexandre Julliard julliard at winehq.org
Mon Jan 18 10:58:50 CST 2010


Module: wine
Branch: master
Commit: 72158ac286dfbf5908c2bc281678422469d0653b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=72158ac286dfbf5908c2bc281678422469d0653b

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Jan 14 11:35:09 2010 -0800

Revert "advapi32: Free descriptor if it isn't returned from GetSecurityInfo().".

This reverts commit dbd76575ef8353484afa0b0d2da95760c26f34fe.

According to MSDN, ppSecurityDescriptor must not be NULL if any of the
SID or ACL parameters are non-NULL.  This is wrong, and native
GetSecurityInfo will happily return those pointers, leaving one unable
to free the original security descriptor.

---

 dlls/advapi32/security.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index babe468..821fb86 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -3118,8 +3118,11 @@ DWORD WINAPI GetSecurityInfo(
     }
     if (ppSecurityDescriptor)
         *ppSecurityDescriptor = sd;
-    else
-        LocalFree(sd);
+
+    /* The security descriptor (sd) cannot be freed if ppSecurityDescriptor is
+     * NULL, because native happily returns the SIDs and ACLs that are requested
+     * in this case.
+     */
 
     return ERROR_SUCCESS;
 }




More information about the wine-cvs mailing list