On 06/01/15 03:42, Paul Eggert wrote:
> Thanks for reporting that.  I installed the attached patch, which has a test 
> for 
> the bug.

It's probably worth mentioning the crash in NEWS
and augmenting the test to detect crashes in other situations,
which I've done in the attached.

thanks,
Pádraig.
>From 2c884ee394c0a6419c9b517e79d42df3425ef2be Mon Sep 17 00:00:00 2001
From: Daiki Ueno <[email protected]>
Date: Tue, 6 Jan 2015 03:36:57 +0000
Subject: [PATCH] maint: adjustments related to previous shuf crash fix

* tests/misc/shuf.sh: Improve the test so it detects
crashes in more cases.
* NEWS: Mention the previous fix.
---
 NEWS               |  3 +++
 tests/misc/shuf.sh | 17 +++++++++--------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/NEWS b/NEWS
index b81154d..f59bfc1 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   rm indicates the correct number of arguments in its confirmation prompt,
   on all platforms.  [bug introduced in coreutils-8.22]
 
+  shuf -i with a single redundant operand, would crash instead of issuing
+  a diagnostic.  [bug introduced in coreutils-8.22]
+
 ** New features
 
   chroot accepts the new --skip-chdir option to not change the working directory
diff --git a/tests/misc/shuf.sh b/tests/misc/shuf.sh
index 5e85d9a..34f4225 100755
--- a/tests/misc/shuf.sh
+++ b/tests/misc/shuf.sh
@@ -47,7 +47,8 @@ test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; }
 shuf -er
 test $? -eq 1 || fail=1
 
-# coreutils-8.23 dumps core.
+# coreutils-8.22 and 8.23 dump core
+# with a single redundant operand with --input-range
 shuf -i0-0 1
 test $? -eq 1 || fail=1
 
@@ -70,7 +71,7 @@ touch unreadable || framework_failure_
 chmod 0 unreadable || framework_failure_
 if ! test -r unreadable; then
   shuf -n0 unreadable || fail=1
-  shuf -n1 unreadable && fail=1
+  { shuf -n1 unreadable || test $? -ne 1; } && fail=1
 fi
 
 # Multiple -n is accepted, should use the smallest value
@@ -81,25 +82,25 @@ test "$c" -eq 3 || { fail=1; echo "Multiple -n failed">&2 ; }
 # Test error conditions
 
 # -i and -e must not be used together
-: | shuf -i0-9 -e A B &&
+: | { shuf -i0-9 -e A B || test $? -ne 1; } &&
   { fail=1; echo "shuf did not detect erroneous -e and -i usage.">&2 ; }
 # Test invalid value for -n
-: | shuf -nA &&
+: | { shuf -nA || test $? -ne 1; } &&
   { fail=1; echo "shuf did not detect erroneous -n usage.">&2 ; }
 # Test multiple -i
-shuf -i0-9 -n10 -i8-90 &&
+{ shuf -i0-9 -n10 -i8-90 || test $? -ne 1; } &&
   { fail=1; echo "shuf did not detect multiple -i usage.">&2 ; }
 # Test invalid range
 for ARG in '1' 'A' '1-' '1-A'; do
-  shuf -i$ARG &&
+    { shuf -i$ARG || test $? -ne 1; } &&
     { fail=1; echo "shuf did not detect erroneous -i$ARG usage.">&2 ; }
 done
 
 # multiple -o are forbidden
-shuf -i0-9 -o A -o B &&
+{ shuf -i0-9 -o A -o B || test $? -ne 1; } &&
   { fail=1; echo "shuf did not detect erroneous multiple -o usage.">&2 ; }
 # multiple random-sources are forbidden
-shuf -i0-9 --random-source A --random-source B &&
+{ shuf -i0-9 --random-source A --random-source B || test $? -ne 1; } &&
   { fail=1; echo "shuf did not detect multiple --random-source usage.">&2 ; }
 
 # Test --repeat option
-- 
2.1.0

Reply via email to