diff options
author | Jim Meyering <jim@meyering.net> | 2006-12-20 14:25:55 +0100 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2006-12-20 14:25:55 +0100 |
commit | d69fc66d81c7166fe689418f42b7cb900d2a1433 (patch) | |
tree | d5892567bd10b245328d8da36bef287a0d1ede41 /tests/misc | |
parent | 4e48b4ce334cb601dbbe2562e3aa410dc3ef3fba (diff) | |
download | coreutils-d69fc66d81c7166fe689418f42b7cb900d2a1433.tar.xz |
"cut -f 2- A B" no longer triggers a double-free bug
* src/cut.c (cut_fields): Set file-scoped global to NULL after
freeing it. This avoids a double-free (and core dump on some systems)
for this usage: "echo 1>a; echo 2>b; cut -f2- a b". Reported by
James Hunt in <http://bugzilla.redhat.com/220312>.
* NEWS: List this bug fix.
* THANKS: Mention him.
* tests/misc/cut: New file.
* tests/misc/Makefile.am (TESTS): Add cut.
Diffstat (limited to 'tests/misc')
-rw-r--r-- | tests/misc/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/misc/cut | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/tests/misc/Makefile.am b/tests/misc/Makefile.am index 8ff26e720..20ebeeb67 100644 --- a/tests/misc/Makefile.am +++ b/tests/misc/Makefile.am @@ -36,6 +36,7 @@ TESTS_ENVIRONMENT = \ # will execute the test script rather than the standard utility. TESTS = \ + cut \ wc-files0-from \ wc-files0 \ cat-proc \ diff --git a/tests/misc/cut b/tests/misc/cut new file mode 100755 index 000000000..3db4c9bae --- /dev/null +++ b/tests/misc/cut @@ -0,0 +1,51 @@ +#!/bin/sh +# Test "cut". -*- perl -*- + +# Copyright (C) 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +: ${PERL=perl} +: ${srcdir=.} + +$PERL -e 1 > /dev/null 2>&1 || { + echo 1>&2 "$0: configure didn't find a usable version of Perl," \ + "so can't run this test" + exit 77 +} + +exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF +require 5.003; +use strict; + +(my $ME = $0) =~ s|.*/||; + +# Turn off localisation of executable's ouput. +@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + +my @Tests = + ( + # Provoke a double-free in cut from coreutils-6.7. + ['dbl-free', '-f2-', {IN=>{f=>'x'}}, {IN=>{g=>'y'}}, {OUT=>"x\ny\n"}], + ); + +my $save_temps = $ENV{DEBUG}; +my $verbose = $ENV{VERBOSE}; + +my $prog = 'cut'; +my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose); +exit $fail; +EOF |