diff options
author | Jim Meyering <jim@meyering.net> | 2012-12-08 12:04:14 -0800 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2012-12-09 15:08:36 -0800 |
commit | 4f62d2fe28abe9d7b59b2fc50b59db4d8f2a3853 (patch) | |
tree | 8ccbf5868b80faff05a465cf559aa2fe94a85936 | |
parent | 62543570d72b756a3b04ca9d1ebec6f4dd2eea4b (diff) | |
download | coreutils-4f62d2fe28abe9d7b59b2fc50b59db4d8f2a3853.tar.xz |
tests: add test case and note that last week's cut change is a bug fix
* tests/misc/cut-huge-to-eol-range.sh: New test, showing that
the change in v8.20-51-g7d03466 is a bug fix after all.
* tests/local.mk (all_tests): Add it.
* NEWS (Bug fixes): Mention it.
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | tests/local.mk | 1 | ||||
-rwxr-xr-x | tests/misc/cut-huge-to-eol-range.sh | 30 |
3 files changed, 35 insertions, 0 deletions
@@ -13,6 +13,10 @@ GNU coreutils NEWS -*- outline -*- cp --no-preserve=mode now no longer exits non-zero. [bug introduced in coreutils-8.20] + cut with a range like "N-" no longer allocates N/8 bytes. That buffer + would never be used, and allocation failure could cause cut to fail. + [bug introduced in coreutils-8.10] + 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".] diff --git a/tests/local.mk b/tests/local.mk index d5bb6f718..5eeddd53b 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -246,6 +246,7 @@ all_tests = \ tests/misc/pwd-option.sh \ tests/misc/chcon-fail.sh \ tests/misc/cut.pl \ + tests/misc/cut-huge-to-eol-range.sh \ tests/misc/wc.pl \ tests/misc/wc-files0-from.pl \ tests/misc/wc-files0.sh \ diff --git a/tests/misc/cut-huge-to-eol-range.sh b/tests/misc/cut-huge-to-eol-range.sh new file mode 100755 index 000000000..4e3ee036a --- /dev/null +++ b/tests/misc/cut-huge-to-eol-range.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# Ensure that cut does not allocate mem for a range like -b9999999999999- + +# Copyright (C) 2012 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 3 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, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src +print_ver_ cut +require_ulimit_ +getlimits_ + +# From coreutils-8.10 through 8.20, this would make cut try to allocate +# a 256MiB bit vector. With a 20MB limit on VM, the following would fail. +(ulimit -v 20000; : | cut -b$INT_MAX- > err 2>&1) || fail=1 + +compare /dev/null err || fail=1 + +Exit $fail |