From 1482f730b47d1abad3d75199dde5237d9bf16a4a Mon Sep 17 00:00:00 2001 From: Bernhard Voelker Date: Sun, 18 Nov 2012 22:20:16 +0100 Subject: cut: do not accept the invalid range 0- MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 . --- NEWS | 4 ++++ src/cut.c | 3 +++ tests/misc/cut.pl | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/NEWS b/NEWS index db6a207bd..e4a284caf 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 87380ac66..2a571483a 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 0ce051ab0..cd5655569 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"}], -- cgit v1.2.3-54-g00ecf