From c1410a8d1ef1494e945c85cbe19903c2220547fe Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 May 2008 12:43:18 +0000 Subject: [PATCH] * sec_acl.cc (setacl): Set errno to EINVAL if user or group don't exist. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/sec_acl.cc | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 1ecefe1a9..11362be74 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2008-05-22 Corinna Vinschen + + * sec_acl.cc (setacl): Set errno to EINVAL if user or group don't exist. + 2008-05-22 Corinna Vinschen * path.cc (cygwin_conv_path): Define tp before setting up faul handler. diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index b1f117416..318a34ff5 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -154,9 +154,13 @@ setacl (HANDLE handle, path_conv &pc, int nentries, __aclent32_t *aclbufp, case USER: case DEF_USER: if (!(pw = internal_getpwuid (aclbufp[i].a_id)) - || !sid.getfrompw (pw) - || !add_access_allowed_ace (acl, ace_off++, allow, - sid, acl_len, inheritance)) + || !sid.getfrompw (pw)) + { + set_errno (EINVAL); + return -1; + } + if (!add_access_allowed_ace (acl, ace_off++, allow, + sid, acl_len, inheritance)) return -1; break; case GROUP_OBJ: @@ -172,9 +176,13 @@ setacl (HANDLE handle, path_conv &pc, int nentries, __aclent32_t *aclbufp, case GROUP: case DEF_GROUP: if (!(gr = internal_getgrgid (aclbufp[i].a_id)) - || !sid.getfromgr (gr) - || !add_access_allowed_ace (acl, ace_off++, allow, - sid, acl_len, inheritance)) + || !sid.getfromgr (gr)) + { + set_errno (EINVAL); + return -1; + } + if (!add_access_allowed_ace (acl, ace_off++, allow, + sid, acl_len, inheritance)) return -1; break; case OTHER_OBJ: