]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-macos-allow-cached-stat-access-20051118
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Sat, 19 Nov 2005 03:59:08 +0000 (03:59 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 19 Nov 2005 03:59:08 +0000 (03:59 +0000)
FIXES 23257

allow cached stat info to be accessed for directories where a user has only "l"

(cherry picked from commit 54ad6e769e1362ad5a81c0ef91c49babad9a37f1)

src/afs/DARWIN/osi_vnodeops.c

index bb8be243d1d1a3202a3025405ab918edb75e0066..307ece30f386cf30b8e1cc3000f297bef4ef6671 100644 (file)
@@ -574,6 +574,10 @@ afs_vop_access(ap)
           bits |= PRSFS_INSERT;
        if (ap->a_action & KAUTH_VNODE_DELETE_CHILD)
           bits |= PRSFS_DELETE;
+       if (ap->a_action & KAUTH_VNODE_READ_ATTRIBUTES)
+          bits |= PRSFS_LOOKUP;
+       if (ap->a_action & KAUTH_VNODE_READ_SECURITY) /* mode bits/gid, not afs acl */
+          bits |= PRSFS_LOOKUP;
     } else {
        if (ap->a_action & KAUTH_VNODE_READ_DATA)
           bits |= PRSFS_READ;
@@ -581,9 +585,11 @@ afs_vop_access(ap)
           bits |= PRSFS_WRITE;
        if (ap->a_action & KAUTH_VNODE_EXECUTE)
           bits |= PRSFS_READ; /* and mode bits.... */
+       if (ap->a_action & KAUTH_VNODE_READ_ATTRIBUTES)
+          bits |= PRSFS_READ;
+       if (ap->a_action & KAUTH_VNODE_READ_SECURITY) /* mode bits/gid, not afs acl */
+          bits |= PRSFS_READ;
     }
-    if (ap->a_action & KAUTH_VNODE_READ_ATTRIBUTES)
-       bits |= PRSFS_READ;
     if (ap->a_action & KAUTH_VNODE_WRITE_ATTRIBUTES)
        bits |= PRSFS_WRITE;
 #if 0 /* no extended attributes */
@@ -592,8 +598,6 @@ afs_vop_access(ap)
     if (ap->a_action & KAUTH_VNODE_WRITE_EXTATTRIBUTES)
        bits |= PRSFS_WRITE;
 #endif
-    if (ap->a_action & KAUTH_VNODE_READ_SECURITY) /* mode bits/gid, not afs acl */
-       bits |= PRSFS_READ;
     if (ap->a_action & KAUTH_VNODE_WRITE_SECURITY)
        bits |= PRSFS_WRITE;
     /* we can't check for KAUTH_VNODE_TAKE_OWNERSHIP, so we always permit it */