From: Bernhard Voelker Date: Sun, 18 Nov 2012 21:20:16 +0000 (+0100) Subject: cut: do not accept the invalid range 0- X-Git-Tag: v8.21~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1482f730b47d1abad3d75199dde5237d9bf16a4a;p=thirdparty%2Fcoreutils.git cut: do not accept the invalid range 0- The command "echo 12345 | cut -b 0-" prints an empty line while it should fail with "fields and positions are numbered from 1". * src/cut.c (set_fields): Add a diagnostic for the invalid open range which starts with Zero, i.e., the range 0-. * tests/misc/cut.pl: Add tests to ensure the range 0- fails for fields (-f) and for positions (-b, -c). * NEWS: Mention the fix. Reported by Marcel Böhme in . --- diff --git a/NEWS b/NEWS index db6a207bd4..e4a284cafe 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,10 @@ GNU coreutils NEWS -*- outline -*- ** Bug fixes + cut no longer accepts the invalid range 0-, which made it print empty lines. + Instead, cut now fails and emits an appropriate diagnostic. + [This bug was present in "the beginning".] + pr -n no longer crashes when passed values >= 32. Also line numbers are consistently padded with spaces, rather than with zeros for certain widths. [bug introduced in TEXTUTILS-1_22i] diff --git a/src/cut.c b/src/cut.c index 87380ac66b..2a571483ad 100644 --- a/src/cut.c +++ b/src/cut.c @@ -369,6 +369,9 @@ set_fields (const char *fieldstr) dash_found = true; fieldstr++; + if (lhs_specified && !value) + FATAL_ERROR (_("fields and positions are numbered from 1")); + initial = (lhs_specified ? value : 1); value = 0; } diff --git a/tests/misc/cut.pl b/tests/misc/cut.pl index 0ce051ab0a..cd5655569c 100755 --- a/tests/misc/cut.pl +++ b/tests/misc/cut.pl @@ -46,6 +46,11 @@ my @Tests = # It was treated just like "-2". ['zero-2', '-f0-2', {ERR=>$from_1}, {EXIT => 1} ], + # Up to coreutils-8.20, specifying a range of 0- was not an error. + ['zero-3b', '-b0-', {ERR=>$from_1}, {EXIT => 1} ], + ['zero-3c', '-c0-', {ERR=>$from_1}, {EXIT => 1} ], + ['zero-3f', '-f0-', {ERR=>$from_1}, {EXIT => 1} ], + ['1', '-d:', '-f1,3-', {IN=>"a:b:c\n"}, {OUT=>"a:c\n"}], ['2', '-d:', '-f1,3-', {IN=>"a:b:c\n"}, {OUT=>"a:c\n"}], ['3', qw(-d: -f2-), {IN=>"a:b:c\n"}, {OUT=>"b:c\n"}],