svn commit: r203198 - stable/8/bin/setfacl
Edward Tomasz Napierala
trasz at FreeBSD.org
Sat Jan 30 15:50:01 UTC 2010
Author: trasz
Date: Sat Jan 30 15:50:01 2010
New Revision: 203198
URL: http://svn.freebsd.org/changeset/base/203198
Log:
MFC r201016:
Improve ACL branding mismatch detection and reporting in some rare cases,
such as "setfacl -m ''".
Modified:
stable/8/bin/setfacl/merge.c
stable/8/bin/setfacl/remove.c
stable/8/bin/setfacl/setfacl.h
stable/8/bin/setfacl/util.c
Directory Properties:
stable/8/bin/setfacl/ (props changed)
Modified: stable/8/bin/setfacl/merge.c
==============================================================================
--- stable/8/bin/setfacl/merge.c Sat Jan 30 15:42:06 2010 (r203197)
+++ stable/8/bin/setfacl/merge.c Sat Jan 30 15:50:01 2010 (r203198)
@@ -100,11 +100,10 @@ merge_acl(acl_t acl, acl_t *prev_acl, co
acl_get_brand_np(acl, &acl_brand);
acl_get_brand_np(*prev_acl, &prev_acl_brand);
- if (acl_brand != prev_acl_brand) {
+ if (branding_mismatch(acl_brand, prev_acl_brand)) {
warnx("%s: branding mismatch; existing ACL is %s, "
"entry to be merged is %s", filename,
- prev_acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e",
- acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e");
+ brand_name(prev_acl_brand), brand_name(acl_brand));
return (-1);
}
@@ -252,9 +251,10 @@ add_acl(acl_t acl, uint entry_number, ac
return (-1);
}
- if (acl_brand != ACL_BRAND_NFS4) {
+ if (branding_mismatch(acl_brand, ACL_BRAND_NFS4)) {
warnx("%s: branding mismatch; existing ACL is NFSv4, "
- "entry to be added is POSIX.1e", filename);
+ "entry to be added is %s", filename,
+ brand_name(acl_brand));
return (-1);
}
Modified: stable/8/bin/setfacl/remove.c
==============================================================================
--- stable/8/bin/setfacl/remove.c Sat Jan 30 15:42:06 2010 (r203197)
+++ stable/8/bin/setfacl/remove.c Sat Jan 30 15:50:01 2010 (r203198)
@@ -53,11 +53,10 @@ remove_acl(acl_t acl, acl_t *prev_acl, c
acl_get_brand_np(acl, &acl_brand);
acl_get_brand_np(*prev_acl, &prev_acl_brand);
- if (acl_brand != prev_acl_brand) {
+ if (branding_mismatch(acl_brand, prev_acl_brand)) {
warnx("%s: branding mismatch; existing ACL is %s, "
"entry to be removed is %s", filename,
- prev_acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e",
- acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e");
+ brand_name(prev_acl_brand), brand_name(acl_brand));
return (-1);
}
Modified: stable/8/bin/setfacl/setfacl.h
==============================================================================
--- stable/8/bin/setfacl/setfacl.h Sat Jan 30 15:42:06 2010 (r203197)
+++ stable/8/bin/setfacl/setfacl.h Sat Jan 30 15:50:01 2010 (r203198)
@@ -71,6 +71,8 @@ void remove_ext(acl_t *prev_acl, const
int set_acl_mask(acl_t *prev_acl, const char *filename);
/* util.c */
void *zmalloc(size_t size);
+const char *brand_name(int brand);
+int branding_mismatch(int brand1, int brand2);
uint have_mask;
uint need_mask;
Modified: stable/8/bin/setfacl/util.c
==============================================================================
--- stable/8/bin/setfacl/util.c Sat Jan 30 15:42:06 2010 (r203197)
+++ stable/8/bin/setfacl/util.c Sat Jan 30 15:50:01 2010 (r203198)
@@ -43,3 +43,26 @@ zmalloc(size_t size)
err(1, "calloc() failed");
return (ptr);
}
+
+const char *
+brand_name(int brand)
+{
+ switch (brand) {
+ case ACL_BRAND_NFS4:
+ return "NFSv4";
+ case ACL_BRAND_POSIX:
+ return "POSIX.1e";
+ default:
+ return "unknown";
+ }
+}
+
+int
+branding_mismatch(int brand1, int brand2)
+{
+ if (brand1 == ACL_BRAND_UNKNOWN || brand2 == ACL_BRAND_UNKNOWN)
+ return (0);
+ if (brand1 != brand2)
+ return (1);
+ return (1);
+}
More information about the svn-src-all
mailing list