]> git.samba.org - rsync.git/commitdiff
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:52:48 +0000 (08:52 -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 ef2751c3050b93335bc537a0ec48301e49290635..91afb321ff0e3dca6ee2445b75f4e90c070095f2 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 19d4d7ad36da3e4c99461d5daa98fa3cbb378518..52314bc1ee05eed0881ac30f344449174d212bec 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;
 }