1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-18 09:46:33 +02:00

* src/shuf.c (read_input): Fix an off-by-one error that

would cause an infloop for piped input of 8KB or more.
* NEWS: Mention the fix.
* tests/misc/shuf: Test for the above fix.
This commit is contained in:
Jim Meyering
2006-09-29 16:52:48 +00:00
parent 31c77a2fde
commit a38becce97
4 changed files with 13 additions and 1 deletions

View File

@@ -1,5 +1,10 @@
2006-09-29 Jim Meyering <jim@meyering.net>
* src/shuf.c (read_input): Fix an off-by-one error that
would cause an infloop for piped input of 8KB or more.
* NEWS: Mention the fix.
* tests/misc/shuf: Test for the above fix.
Since any system may be affected by the Darwin readdir bug,
perform the extra rewinddir unconditionally. The performance
impact of rewinding a directory is negligible.

3
NEWS
View File

@@ -35,6 +35,9 @@ GNU coreutils NEWS -*- outline -*-
"groups" now processes options like --help more compatibly.
shuf would infloop, given 8KB or more of piped input
* Major changes in release 6.2 (2006-09-18) [stable candidate]
** Changes in behavior

View File

@@ -178,7 +178,7 @@ read_input (FILE *in, char eolbyte, char ***pline)
do
{
if (alloc == used)
if (alloc <= used + 1)
{
if (alloc == SIZE_MAX)
xalloc_die ();

View File

@@ -51,4 +51,8 @@ cmp in out > /dev/null && { fail=1; echo "not random?" 1>&2; }
sort -n out > out1
cmp in out1 || { fail=1; echo "not a permutation" 1>&2; }
# Before coreutils-6.3, this would infloop.
# "seq 1860" produces 8193 bytes of output.
seq 1860 | shuf > /dev/null || fail=1
(exit $fail); exit $fail