From: Pádraig Brady Date: Tue, 4 Oct 2016 12:43:32 +0000 (+0100) Subject: rm: disallow --n alias for --no-preserve-root X-Git-Tag: v8.26~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e060d9fef64727aa2d41f00f8217c61166bb2e0;p=thirdparty%2Fcoreutils.git rm: disallow --n alias for --no-preserve-root * src/rm.c (main): Ensure the full --no-preserve-root option is specified, rather than allowing --n etc. * tests/rm/r-root.sh: Add a test case. * NEWS: Mention the change in behavior. Improved by Jim Meyering. Fixes http://bugs.gnu.org/24604 --- diff --git a/NEWS b/NEWS index c3554d0fed..e68de05a23 100644 --- a/NEWS +++ b/NEWS @@ -52,6 +52,8 @@ GNU coreutils NEWS -*- outline -*- ** Changes in behavior + rm no longer accepts shortened variants of the --no-preserve-root option. + seq no longer accepts 0 value as increment, and now also rejects NaN values for any argument. @@ -81,8 +83,8 @@ GNU coreutils NEWS -*- outline -*- ** New Features - date now accepts the --debug option, to annotate the parsed date string, - display timezone information, and warn about potential misuse. + date now accepts the --debug option, to annotate the parsed date string, + display timezone information, and warn about potential misuse. * Noteworthy changes in release 8.25 (2016-01-20) [stable] diff --git a/src/rm.c b/src/rm.c index 13a5714c33..2c54405f7b 100644 --- a/src/rm.c +++ b/src/rm.c @@ -287,6 +287,9 @@ main (int argc, char **argv) break; case NO_PRESERVE_ROOT: + if (! STREQ (argv[optind - 1], "--no-preserve-root")) + error (EXIT_FAILURE, 0, + _("you may not abbreviate the --no-preserve-root option")); preserve_root = false; break; diff --git a/tests/rm/r-root.sh b/tests/rm/r-root.sh index b98db141be..3b7837fe02 100755 --- a/tests/rm/r-root.sh +++ b/tests/rm/r-root.sh @@ -210,6 +210,15 @@ for opts in \ test $fail = 1 && { cat out; cat err; Exit $fail; } done +#------------------------------------------------------------------------------- +# Exercise with --no-preserve to ensure shortened equivalent is not allowed. +cat < exp_opt || framework_failure_ +rm: you may not abbreviate the --no-preserve-root option +EOD +returns_ 1 exercise_rm_r_root --no-preserve / || fail=1 +compare exp_opt err || fail=1 +test -f x && fail=1 + #------------------------------------------------------------------------------- # Exercise "rm -r file1 / file2". # Expect a non-Zero exit status representing failure to remove "/",