Fix symlink following bug in chmod -R and friends. Allow SYSV style
'chown foo:bar' in addition to 'chown foo.bar', and fix a bug in the
busybox globbing routine such that 'find /dir -name [i]' no longer
segfaults.
-Erik
diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c
index 8dd7670..fb93f3f 100644
--- a/chmod_chown_chgrp.c
+++ b/chmod_chown_chgrp.c
@@ -48,7 +48,7 @@
"\nOptions:\n\t-R\tchange files and directories recursively\n";
static const char chown_usage[] =
- "chown [OPTION]... OWNER[.[GROUP] FILE...\n\n"
+ "chown [OPTION]... OWNER[<.|:>[GROUP] FILE...\n\n"
"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
"\nOptions:\n\t-R\tchange files and directories recursively\n";
@@ -140,6 +140,8 @@
goto bad_group;
} else {
groupName = strchr(*argv, '.');
+ if (groupName == NULL)
+ groupName = strchr(*argv, ':');
if (groupName) {
*groupName++ = '\0';
gid = strtoul(groupName, &p, 10);
@@ -169,7 +171,7 @@
fatalError( "%s: too few arguments\n", invocationName);
}
while (argc-- > 1) {
- if (recursiveAction (*(++argv), recursiveFlag, TRUE, FALSE,
+ if (recursiveAction (*(++argv), recursiveFlag, FALSE, FALSE,
fileAction, fileAction, NULL) == FALSE)
exit(FALSE);
}