summaryrefslogtreecommitdiffstats
path: root/bin/setfacl
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2012-09-04 12:19:34 +0000
committertrasz <trasz@FreeBSD.org>2012-09-04 12:19:34 +0000
commit9e473fee552fcbe0a8739da0505cedb2119526de (patch)
tree0551f17f706806e8c46ba30542d561d79ae20727 /bin/setfacl
parent0259eae71ddeae3d8d755dc42bbdc21e1016da04 (diff)
downloadFreeBSD-src-9e473fee552fcbe0a8739da0505cedb2119526de.zip
FreeBSD-src-9e473fee552fcbe0a8739da0505cedb2119526de.tar.gz
Fix an error in setfacl(1) that manifested like this:
# setfacl -m u:trasz:rwx x # setfacl -m u:root:rwx x # getfacl x # file: x # owner: root # group: wheel user::rw- user:root:rwx user:trasz:rwx group::r-- mask::rwx other::r-- # setfacl -m u:root:rwx x setfacl: x: acl_calc_mask() failed: Invalid argument setfacl: x: failed to set ACL mask For NFSv4 ACLs, this sort of situation would result in duplicated entries. MFC after: 1 month
Diffstat (limited to 'bin/setfacl')
-rw-r--r--bin/setfacl/merge.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/bin/setfacl/merge.c b/bin/setfacl/merge.c
index 9d8e67a..8c359d5 100644
--- a/bin/setfacl/merge.c
+++ b/bin/setfacl/merge.c
@@ -94,7 +94,7 @@ merge_acl(acl_t acl, acl_t *prev_acl, const char *filename)
acl_tag_t tag, tag_new;
acl_entry_type_t entry_type, entry_type_new;
acl_flagset_t flagset;
- int entry_id, entry_id_new, have_entry, entry_number = 0;
+ int entry_id, entry_id_new, have_entry, had_entry, entry_number = 0;
int acl_brand, prev_acl_brand;
acl_get_brand_np(acl, &acl_brand);
@@ -116,6 +116,7 @@ merge_acl(acl_t acl, acl_t *prev_acl, const char *filename)
while (acl_get_entry(acl, entry_id, &entry) == 1) {
entry_id = ACL_NEXT_ENTRY;
have_entry = 0;
+ had_entry = 0;
/* keep track of existing ACL_MASK entries */
if (acl_get_tag_type(entry, &tag) == -1)
@@ -187,7 +188,7 @@ merge_acl(acl_t acl, acl_t *prev_acl, const char *filename)
err(1, "%s: acl_set_flagset_np() failed",
filename);
}
- have_entry = 1;
+ had_entry = have_entry = 1;
break;
default:
/* should never be here */
@@ -197,7 +198,7 @@ merge_acl(acl_t acl, acl_t *prev_acl, const char *filename)
}
/* if this entry has not been found, it must be new */
- if (have_entry == 0) {
+ if (had_entry == 0) {
/*
* NFSv4 ACL entries must be prepended to the ACL.
OpenPOWER on IntegriCloud