diff --git a/winsup/cygwin/release/3.0.4 b/winsup/cygwin/release/3.0.4 index e6632f461..eeed28396 100644 --- a/winsup/cygwin/release/3.0.4 +++ b/winsup/cygwin/release/3.0.4 @@ -14,3 +14,6 @@ Bug Fixes - Fix access to process list Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00253.html + +- Fix acl_to_text/acl_to_any_text returning EINVAL on empty acl + Addresses: https://cygwin.com/ml/cygwin/2019-03/msg00157.html diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index ce7910ed8..933bfa69d 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -1638,8 +1638,8 @@ char * __acltotext (aclent_t *aclbufp, int aclcnt, const char *prefix, char separator, int options) { - if (!aclbufp || aclcnt < 1 || aclcnt > MAX_ACL_ENTRIES - || aclsort32 (aclcnt, 0, aclbufp)) + if (!aclbufp || aclcnt < 0 || aclcnt > MAX_ACL_ENTRIES + || (aclcnt > 0 && aclsort32 (aclcnt, 0, aclbufp))) { set_errno (EINVAL); return NULL;