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