mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 12:02:47 -05:00
Switch to using SIDs in make_private_security_descriptor().
Daniel Meidlinger reports that at least one Windows machine which is not obviously otherwise misconfigured will respond to our SetEntriesInAcl call with odd errors like ERROR_NONE_MAPPED or ERROR_TRUSTED_RELATIONSHIP_FAILURE. This is apparently to do with failure to convert the names "EVERYONE" and "CURRENT_USER" used in the ACL specification to SIDs. (Or perhaps only one of them is the problem - I didn't investigate in that direction.) If we instead construct a fully SID-based ACL, using the well-known world SID in place of EVERYONE and calling our existing get_user_sid routine in place of CURRENT_USER, he reports that the problem goes away, so let's do that instead. While I'm here, I've slightly simplified the function prototype of make_private_security_descriptor(), by turning 'networksid' into an internal static that we can reuse in subsequent calls once we've set it up. (Mostly because I didn't fancy adding another two pointless parameters at every call site for the two new SIDs.) [originally from svn r10096]
This commit is contained in:
@ -50,15 +50,13 @@ PSID get_user_sid(void);
|
||||
* servers, i.e. allowing access only to the current user id and also
|
||||
* only local (i.e. not over SMB) connections.
|
||||
*
|
||||
* If this function returns TRUE, then 'psd', 'networksid' and 'acl'
|
||||
* will all have been filled in with memory allocated using LocalAlloc
|
||||
* (and hence must be freed later using LocalFree). If it returns
|
||||
* FALSE, then instead 'error' has been filled with a dynamically
|
||||
* allocated error message.
|
||||
* If this function returns TRUE, then 'psd' and 'acl' will have been
|
||||
* filled in with memory allocated using LocalAlloc (and hence must be
|
||||
* freed later using LocalFree). If it returns FALSE, then instead
|
||||
* 'error' has been filled with a dynamically allocated error message.
|
||||
*/
|
||||
int make_private_security_descriptor(DWORD permissions,
|
||||
PSECURITY_DESCRIPTOR *psd,
|
||||
PSID *networksid,
|
||||
PACL *acl,
|
||||
char **error);
|
||||
|
||||
|
Reference in New Issue
Block a user