Fixed segfaults for "chown -R" and "chgrp -R". Also added a message for "too
few arguments".
This commit is contained in:
parent
700a5aed75
commit
eec2f63b3f
@ -25,6 +25,7 @@
|
||||
#include "internal.h"
|
||||
#define BB_DECLARE_EXTERN
|
||||
#define bb_need_invalid_option
|
||||
#define bb_need_too_few_args
|
||||
#include "messages.c"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -114,24 +115,27 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
||||
if (argc < 2)
|
||||
usage(appUsage);
|
||||
invocationName = *argv;
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
/* Parse options */
|
||||
while (argc && (**argv == '-')) {
|
||||
while (--argc >= 0 && *argv && (**argv == '-')) {
|
||||
while (*++(*argv))
|
||||
switch (**argv) {
|
||||
case 'R':
|
||||
recursiveFlag = TRUE;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, invalid_option, invocationName, **argv);
|
||||
usage(appUsage);
|
||||
case 'R':
|
||||
recursiveFlag = TRUE;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, invalid_option, invocationName, **argv);
|
||||
usage(appUsage);
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
|
||||
if (argc == 0 || *argv == NULL) {
|
||||
fprintf(stderr, too_few_args, invocationName);
|
||||
usage(appUsage);
|
||||
}
|
||||
|
||||
if (whichApp == CHMOD_APP) {
|
||||
theMode = *argv;
|
||||
} else {
|
||||
|
@ -74,6 +74,9 @@
|
||||
#if defined bb_need_write_error || ! defined BB_DECLARE_EXTERN
|
||||
BB_DEF_MESSAGE(write_error, "Write Error\n")
|
||||
#endif
|
||||
#if defined bb_need_too_few_args || ! defined BB_DECLARE_EXTERN
|
||||
BB_DEF_MESSAGE(too_few_args, "%s: too few arguments\n")
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user