James Hawkins : Revert "advapi32: Free descriptor if it isn' t returned from GetSecurityInfo().".
Module: wine Branch: master Commit: 72158ac286dfbf5908c2bc281678422469d0653b URL: http://source.winehq.org/git/wine.git/?a=commit;h=72158ac286dfbf5908c2bc2816... Author: James Hawkins <truiken(a)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; }
participants (1)
-
Alexandre Julliard