Module: wine Branch: master Commit: 72158ac286dfbf5908c2bc281678422469d0653b URL: http://source.winehq.org/git/wine.git/?a=commit;h=72158ac286dfbf5908c2bc2816...
Author: James Hawkins truiken@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; }