From 9803b6acb036baea881abb9550c527bfca911cba Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 22 Nov 2013 19:41:49 +0000 Subject: [PATCH] SetEntriesInAcl returns its error code directly. According to the MSDN documentation, that is. Why oh why? Everything _else_ leaves it in GetLastError(). [originally from svn r10094] --- windows/winsecur.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/windows/winsecur.c b/windows/winsecur.c index f5eee440..27f04dd5 100644 --- a/windows/winsecur.c +++ b/windows/winsecur.c @@ -107,6 +107,7 @@ int make_private_security_descriptor(DWORD permissions, { SID_IDENTIFIER_AUTHORITY nt_auth = SECURITY_NT_AUTHORITY; EXPLICIT_ACCESS ea[3]; + int acl_err; int ret = FALSE; *psd = NULL; @@ -144,9 +145,10 @@ int make_private_security_descriptor(DWORD permissions, ea[2].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[2].Trustee.ptstrName = (LPTSTR)*networksid; - if (p_SetEntriesInAclA(3, ea, NULL, acl) != ERROR_SUCCESS || *acl == NULL) { + acl_err = p_SetEntriesInAclA(3, ea, NULL, acl); + if (acl_err != ERROR_SUCCESS || *acl == NULL) { *error = dupprintf("unable to construct ACL: %s", - win_strerror(GetLastError())); + win_strerror(acl_err)); goto cleanup; }