changeset 15571:5d1d1c0b8204

acl: Fix a bug with NFSv4 ACLs on Solaris 10 (newer version). * lib/file-has-acl.c (file_has_acl): ACLs with 4..6 ACEs can be trivial.
author Bruno Haible <bruno@clisp.org>
date Tue, 06 Sep 2011 00:01:24 +0200
parents cd0bdf15a524
children dd7c06a51643
files ChangeLog lib/file-has-acl.c
diffstat 2 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-09-05  Bruno Haible  <bruno@clisp.org>
+
+	acl: Fix a bug with NFSv4 ACLs on Solaris 10 (newer version) in
+	binaries built on the original Solaris 10.
+	* lib/file-has-acl.c (file_has_acl): ACLs with 4..6 ACEs can be
+	trivial.
+
 2011-09-05  Bruno Haible  <bruno@clisp.org>
 
 	acl: Improve support of NFSv4 ACLs on Solaris 10 (newer version).
--- a/lib/file-has-acl.c
+++ b/lib/file-has-acl.c
@@ -612,9 +612,15 @@
             if (count == 0)
               break;
 
-            /* If there are more than 3 entries, there cannot be only the
-               ACE_OWNER, ACE_GROUP, ACE_OTHER entries.  */
-            if (count > 3)
+            /* In the old (original Solaris 10) convention:
+               If there are more than 3 entries, there cannot be only the
+               ACE_OWNER, ACE_GROUP, ACE_OTHER entries.
+               In the newer Solaris 10 and Solaris 11 convention:
+               If there are more than 6 entries, there cannot be only the
+               ACE_OWNER, ACE_GROUP, ACE_EVERYONE entries, each once with
+               NEW_ACE_ACCESS_ALLOWED_ACE_TYPE and once with
+               NEW_ACE_ACCESS_DENIED_ACE_TYPE.  */
+            if (count > 6)
               return 1;
 
             entries = (ace_t *) malloc (count * sizeof (ace_t));