mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-24 10:23:31 +08:00
cut: don't segfault for large unbounded range
* src/cut.c (set_fields): When computing the maximum range endpoint,
take into consideration the start of any unbounded range, like "999-".
* NEWS (Bug fixes): Mention it.
* tests/misc/cut (big-unbounded-b,c,f): Add tests.
Reported by Paul Marinescu in http://debbugs.gnu.org/7993
The bug was introduced on 2004-12-04 via commit 7380cf79
.
This commit is contained in:
parent
9f61806875
commit
2e636af1ef
6
NEWS
6
NEWS
@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*-
|
||||
|
||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
|
||||
** Bug fixes
|
||||
|
||||
cut could segfault when invoked with a user-specified output
|
||||
delimiter and an unbounded range like "-f1234567890-".
|
||||
[bug introduced in coreutils-5.3.0]
|
||||
|
||||
|
||||
* Noteworthy changes in release 8.10 (2011-02-04) [stable]
|
||||
|
||||
|
@ -496,6 +496,8 @@ set_fields (const char *fieldstr)
|
||||
if (rp[i].hi > max_range_endpoint)
|
||||
max_range_endpoint = rp[i].hi;
|
||||
}
|
||||
if (max_range_endpoint < eol_range_start)
|
||||
max_range_endpoint = eol_range_start;
|
||||
|
||||
/* Allocate an array large enough so that it may be indexed by
|
||||
the field numbers corresponding to all finite ranges
|
||||
|
@ -150,6 +150,10 @@ my @Tests =
|
||||
{ERR=>$no_endpoint}],
|
||||
['inval5', '-f', '1-,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}],
|
||||
['inval6', '-f', '-1,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}],
|
||||
# This would evoke a segfault from 5.3.0..6.10
|
||||
['big-unbounded-b', '--output-d=:', '-b1234567890-', {IN=>''}, {OUT=>''}],
|
||||
['big-unbounded-c', '--output-d=:', '-c1234567890-', {IN=>''}, {OUT=>''}],
|
||||
['big-unbounded-f', '--output-d=:', '-f1234567890-', {IN=>''}, {OUT=>''}],
|
||||
);
|
||||
|
||||
@Tests = triple_test \@Tests;
|
||||
|
Loading…
Reference in New Issue
Block a user