PERFORCE change 144881 for review
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Jul 8 12:58:38 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144881
Change 144881 by trasz at trasz_traszkan on 2008/07/08 12:58:06
Tidy up the code in _match_acl. Hopefully no functional changes.
Affected files ...
.. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#7 edit
Differences ...
==== //depot/projects/soc2008/trasz_nfs4acl/sys/kern/subr_acl_nfs4.c#7 (text+ko) ====
@@ -88,25 +88,6 @@
}
/*
- * Remove bits that are set in entry->ae_perm from *needed_bits.
- * Return -1 if entry type is "deny" and bits match, 0 otherwise.
- *
- * XXX: Find a better name.
- */
-static int
-_match_bits(const struct acl_entry *entry, int *needed_bits)
-{
- if (entry->ae_extended == ACL_EXTENDED_DENY) {
- if (entry->ae_perm & *needed_bits)
- return (-1);
- }
-
- *needed_bits &= ~(entry->ae_perm);
-
- return (0);
-}
-
-/*
* Return 1, if access is explicitly denied, -1, if its implicitly
* denied (not allowed), or 0, if allowed.
*
@@ -130,56 +111,37 @@
case ACL_USER_OBJ:
if (file_uid != cred->cr_uid)
continue;
-
- if (_match_bits(entry, &needed_bits))
- return (1);
- if (needed_bits == 0)
- return (0);
-
break;
case ACL_USER:
if (entry->ae_id != cred->cr_uid)
continue;
-
- if (_match_bits(entry, &needed_bits))
- return (1);
- if (needed_bits == 0)
- return (0);
-
break;
case ACL_GROUP_OBJ:
if (!groupmember(file_gid, cred))
continue;
-
- if (_match_bits(entry, &needed_bits))
- return (1);
- if (needed_bits == 0)
- return (0);
-
break;
case ACL_GROUP:
if (!groupmember(entry->ae_id, cred))
continue;
-
- if (_match_bits(entry, &needed_bits))
- return (1);
- if (needed_bits == 0)
- return (0);
-
break;
default:
KASSERT(entry->ae_tag == ACL_EVERYONE,
"entry->ae_tag == ACL_EVERYONE");
+ }
- if (_match_bits(entry, &needed_bits))
+ if (entry->ae_extended == ACL_EXTENDED_DENY) {
+ if (entry->ae_perm & needed_bits)
return (1);
- if (needed_bits == 0)
- return (0);
}
+
+ needed_bits &= ~(entry->ae_perm);
+
+ if (needed_bits == 0)
+ return (0);
}
return (-1);
More information about the p4-projects
mailing list