Allow a failure of EINVAL to mean no ACLs are available.
authorWayne Davison <wayned@samba.org>
Tue, 22 Feb 2011 16:49:21 +0000 (08:49 -0800)
committerWayne Davison <wayned@samba.org>
Tue, 22 Feb 2011 16:51:14 +0000 (08:51 -0800)
(If our POSIX types aren't valid, we can't handle the ACLs.)

acls.c
lib/sysacls.c

diff --git a/acls.c b/acls.c
index 87b6c80..9fac3cd 100644 (file)
--- a/acls.c
+++ b/acls.c
@@ -1101,6 +1101,9 @@ int default_perms_for_dir(const char *dir)
        if (sacl == NULL) {
                /* Couldn't get an ACL.  Darn. */
                switch (errno) {
+               case EINVAL:
+                       /* If SMB_ACL_TYPE_DEFAULT isn't valid, then the ACLs must be non-POSIX. */
+                       break;
 #ifdef ENOTSUP
                case ENOTSUP:
 #endif
index 19d4d7a..52314bc 100644 (file)
@@ -2781,6 +2781,11 @@ int no_acl_syscall_error(int err)
                return 1;
        }
 #endif
+       if (err == EINVAL) {
+               /* If the type of SMB_ACL_TYPE_ACCESS or SMB_ACL_TYPE_DEFAULT
+                * isn't valid, then the ACLs must be non-POSIX. */
+               return 1;
+       }
        return 0;
 }