This function in xfs_repair tries to make sure that if an attr name reserved for acls exists in the root namespace, then its value is a valid acl. However, because it only compares up to the length of the reserved name, superstrings may match and cause false positive xfs_repair errors. Ensure that both the length and the content match before flagging it as an error. Spotted-by: Zach Brown <zab@xxxxxxxxx> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 27442c4..89a5bbf 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -747,9 +747,10 @@ valuecheck( void *valuep; int clearit = 0; - if ((strncmp(namevalue, SGI_ACL_FILE, SGI_ACL_FILE_SIZE) == 0) || - (strncmp(namevalue, SGI_ACL_DEFAULT, - SGI_ACL_DEFAULT_SIZE) == 0)) { + if ((namelen == SGI_ACL_FILE_SIZE && + strncmp(namevalue, SGI_ACL_FILE, SGI_ACL_FILE_SIZE) == 0) || + (namelen == SGI_ACL_DEFAULT_SIZE && + strncmp(namevalue, SGI_ACL_DEFAULT, SGI_ACL_DEFAULT_SIZE) == 0)) { if (value == NULL) { valuep = malloc(valuelen); if (!valuep) _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs