diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | src/seq.c | 4 | ||||
-rwxr-xr-x | tests/misc/seq | 16 |
3 files changed, 18 insertions, 6 deletions
@@ -12,6 +12,10 @@ GNU coreutils NEWS -*- outline -*- "rmdir --ignore-fail-on-non-empty" detects and ignores the failure in more cases when a directory is empty. + "seq -f % 1" would issue the erroneous diagnostic "seq: memory exhausted" + rather than reporting the invalid string format. + [bug introduced in coreutils-6.0] + ** Improvements ls --color no longer outputs unnecessary escape sequences @@ -1,5 +1,5 @@ /* seq - print sequence of numbers to standard output. - Copyright (C) 1994-2007 Free Software Foundation, Inc. + Copyright (C) 1994-2008 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -209,7 +209,7 @@ long_double_format (char const *fmt, struct layout *layout) length_modifier_offset = i; has_L = (fmt[i] == 'L'); i += has_L; - if (! strchr ("efgaEFGA", fmt[i])) + if (fmt[i] == '\0' || ! strchr ("efgaEFGA", fmt[i])) return NULL; for (i++; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i += (fmt[i] == '%') + 1) diff --git a/tests/misc/seq b/tests/misc/seq index 9c1e48f01..1a153a310 100755 --- a/tests/misc/seq +++ b/tests/misc/seq @@ -2,7 +2,7 @@ # -*- perl -*- # Test "seq". -# Copyright (C) 1999, 2000, 2003, 2005-2007 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2005-2008 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,6 +31,7 @@ use strict; @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; my $prog = 'seq'; +my $try_help = "Try `$prog --help' for more information.\n"; my @Tests = ( @@ -80,9 +81,16 @@ my @Tests = # In coreutils-[6.0..6.9], this would mistakenly succeed and print "%Lg". ['fmt-c', qw(-f %%g 1), {EXIT => 1}, - {ERR => "seq: invalid format string: `%%g'\n" - . "Try `seq --help' for more information.\n"}, -], + {ERR => "seq: invalid format string: `%%g'\n" . $try_help }], + + # In coreutils-6.9..6.10, this would fail with an erroneous diagnostic: + # "seq: memory exhausted". In coreutils-6.0..6.8, it would mistakenly + # succeed and print a blank line. + ['fmt-eos1', qw(-f % 1), {EXIT => 1}, + {ERR => "seq: invalid format string: `%'\n" . $try_help }], + ['fmt-eos2', qw(-f %g% 1), {EXIT => 1}, + {ERR => "seq: invalid format string: `%g%'\n" . $try_help }], + ); # Append a newline to each entry in the OUT array. |