summaryrefslogtreecommitdiff
path: root/src/cut.c
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2013-02-04 11:39:20 +0000
committerPádraig Brady <P@draigBrady.com>2013-02-04 13:55:01 +0000
commitbe7932e863de07c4c7e4fc3c1db3eb6d04ba9af5 (patch)
tree46160fbc21278846454f9264d82ca0d505099658 /src/cut.c
parentd57ebc45ba4c59cc6f8bb0e9a435ecbddc84b982 (diff)
downloadcoreutils-be7932e863de07c4c7e4fc3c1db3eb6d04ba9af5.tar.xz
cut: fix a segfault with disjoint open ended ranges
Fixes the issue introduced in unreleased commit v8.20-60-gec48bea. * src/cut.c (set_fields): Don't access the bit array if we've an open ended range that's outside any finite range. * tests/misc/cut.pl: Add tests for this case. Reported by Marcel Böhme in http://bugs.gnu.org/13627
Diffstat (limited to 'src/cut.c')
-rw-r--r--src/cut.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cut.c b/src/cut.c
index 36172c061..494aad772 100644
--- a/src/cut.c
+++ b/src/cut.c
@@ -530,7 +530,9 @@ set_fields (const char *fieldstr)
if (output_delimiter_specified
&& !complement
&& eol_range_start
- && max_range_endpoint && !is_printable_field (eol_range_start))
+ && max_range_endpoint
+ && (max_range_endpoint < eol_range_start
+ || !is_printable_field (eol_range_start)))
mark_range_start (eol_range_start);
free (rp);