>From 82f2b062c0e21d9a0d64f9ceab363d2a79f5a6eb Mon Sep 17 00:00:00 2001 From: Cojocaru Alexandru <xo...@gmx.com> Date: Thu, 6 Dec 2012 03:03:41 +0100 Subject: [PATCH] cut: fix memory leak
* src/cut.c (set_fields): don't allocate memory for `printable_field' if there are no finite ranges. The bug was introduced on 2012-2-7 via commit 2e636af. --- src/cut.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cut.c b/src/cut.c index 4219d24..87abd15 100644 --- a/src/cut.c +++ b/src/cut.c @@ -500,14 +500,13 @@ 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 (i.e. '2-6' or '-4', but not '5-') in FIELDSTR. */ - printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1); + if (n_rp) + printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1); qsort (rp, n_rp, sizeof (rp[0]), compare_ranges); @@ -531,8 +530,11 @@ set_fields (const char *fieldstr) if (output_delimiter_specified && !complement - && eol_range_start && !is_printable_field (eol_range_start)) - mark_range_start (eol_range_start); + && eol_range_start + && printable_field && !is_printable_field (eol_range_start)) + { + mark_range_start (eol_range_start); + } free (rp); -- 1.8.0.1 -- Cojocaru Alexandru <xo...@gmx.com>