Ben Walton wrote: > Thanks for saving me the legwork on this. The patch does correct the > problem. I appreciate the quick turnaround on this.
Thanks to both of you. I've just updated coreutils to use the latest from gnulib, so this will be fixed in coreutils-8.11. However, contrary to most NEWS-worthy bugs, I have not tried to determine when this one was introduced. From the initial report, I'm assuming it was introduced in coreutils-8.8, and wrote that in NEWS. Ben, can you confirm that touch from coreutils-8.7 did not have this problem? I'll wait for confirmation before pushing. >From d8ed00cb61fede223b1450e53b7d6c21edff4b43 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Sun, 13 Mar 2011 09:56:53 +0100 Subject: [PATCH] touch: update to latest gnulib to fix Solaris 10 touch segfault * gnulib: Update to latest, to address http://debbugs.gnu.org/8230. When built on Solaris 9 and run on Solaris 10, touch would segfault. Reported by Ben Walton. * bootstrap: Resync from gnulib. * tests/init.sh: Likewise. * NEWS (Bug fixes): Mention this. --- NEWS | 3 +++ THANKS.in | 1 + bootstrap | 6 +++--- gnulib | 2 +- tests/init.sh | 34 +++++++++++++++++----------------- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/NEWS b/NEWS index 5770410..9ceaa06 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,9 @@ GNU coreutils NEWS -*- outline -*- sort no longer spawns 7 worker threads to sort 16 lines [bug introduced in coreutils-8.6] + touch built on Solaris 9 would segfault when run on Solaris 10 + [bug introduced in coreutils-8.8] + wc would dereference a NULL pointer upon an early out-of-memory error [bug introduced in coreutils-7.1] diff --git a/THANKS.in b/THANKS.in index fe53c44..fbc4153 100644 --- a/THANKS.in +++ b/THANKS.in @@ -71,6 +71,7 @@ Barry Kelly http://barrkel.blogspot.com/ Bauke Jan Douma bjdo...@xs4all.nl Ben Elliston b...@air.net.au Ben Harris bj...@netbsd.org +Ben Walton bwal...@artsci.utoronto.ca Bengt Martensson be...@mathematik.uni-bremen.de Benjamin Cutler cutle...@simla.colostate.edu Bernard Giroud bernard.gir...@creditlyonnais.ch diff --git a/bootstrap b/bootstrap index e9ec11e..f004ad3 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh # Print a version string. -scriptversion=2011-01-21.16; # UTC +scriptversion=2011-03-03.12; # UTC # Bootstrap this package from checked-out sources. @@ -874,7 +874,7 @@ grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac >/dev/null || for command in \ libtool \ - "${ACLOCAL-aclocal} --force -I m4 $ACLOCAL_FLAGS" \ + "${ACLOCAL-aclocal} --force -I '$m4_base' $ACLOCAL_FLAGS" \ "${AUTOCONF-autoconf} --force" \ "${AUTOHEADER-autoheader} --force" \ "${AUTOMAKE-automake} --add-missing --copy --force-missing" @@ -885,7 +885,7 @@ do command="${LIBTOOLIZE-libtoolize} -c -f" fi echo "$0: $command ..." - $command || exit + eval "$command" || exit done diff --git a/gnulib b/gnulib index 6f0680e..68d757e 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 6f0680eb29a1737d704a1df26aafc00490cd34d8 +Subproject commit 68d757e2cb228590d46961cbf3e9ec7d4460e335 diff --git a/tests/init.sh b/tests/init.sh index 44be35b..71c6516 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -74,10 +74,10 @@ Exit () { set +e; (exit $1); exit $1; } # the reason for skip/failure to console, rather than to the .log files. : ${stderr_fileno_=2} -warn_() { echo "$@" 1>&$stderr_fileno_; } -fail_() { warn_ "$ME_: failed test: $@"; Exit 1; } -skip_() { warn_ "$ME_: skipped test: $@"; Exit 77; } -framework_failure_() { warn_ "$ME_: set-up failure: $@"; Exit 99; } +warn_ () { echo "$@" 1>&$stderr_fileno_; } +fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; } +skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; } +framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; } # Sanitize this shell to POSIX mode, if possible. DUALCASE=1; export DUALCASE @@ -193,7 +193,7 @@ fi test -n "$EXEEXT" && shopt -s expand_aliases # Enable glibc's malloc-perturbing option. -# This is cheap and useful for exposing code that depends on the fact that +# This is useful for exposing code that depends on the fact that # malloc-related functions often return memory that is mostly zeroed. # If you have the time and cycles, use valgrind to do an even better job. : ${MALLOC_PERTURB_=87} @@ -202,22 +202,22 @@ export MALLOC_PERTURB_ # This is a stub function that is run upon trap (upon regular exit and # interrupt). Override it with a per-test function, e.g., to unmount # a partition, or to undo any other global state changes. -cleanup_() { :; } +cleanup_ () { :; } if ( diff --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then - compare() { diff -u "$@"; } + compare () { diff -u "$@"; } elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then - compare() { cmp -s "$@"; } + compare () { cmp -s "$@"; } else - compare() { cmp "$@"; } + compare () { cmp "$@"; } fi # An arbitrary prefix to help distinguish test directories. -testdir_prefix_() { printf gt; } +testdir_prefix_ () { printf gt; } # Run the user-overridable cleanup_ function, remove the temporary # directory and exit with the incoming value of $?. -remove_tmp_() +remove_tmp_ () { __st=$? cleanup_ @@ -233,7 +233,7 @@ remove_tmp_() # contains only the specified bytes (see the case stmt below), then print # a space-separated list of those names and return 0. Otherwise, don't # print anything and return 1. Naming constraints apply also to DIR. -find_exe_basenames_() +find_exe_basenames_ () { feb_dir_=$1 feb_fail_=0 @@ -266,7 +266,7 @@ find_exe_basenames_() # PROG that simply invokes PROG.exe, then return 0. If any selected # file name or the directory name, $1, contains an unexpected character, # define no alias and return 1. -create_exe_shims_() +create_exe_shims_ () { case $EXEEXT in '') return 0 ;; @@ -288,7 +288,7 @@ create_exe_shims_() # Use this function to prepend to PATH an absolute name for each # specified, possibly-$initial_cwd_-relative, directory. -path_prepend_() +path_prepend_ () { while test $# != 0; do path_dir_=$1 @@ -311,7 +311,7 @@ path_prepend_() export PATH } -setup_() +setup_ () { if test "$VERBOSE" = yes; then # Test whether set -x may cause the selected shell to corrupt an @@ -364,7 +364,7 @@ setup_() # - make only $MAX_TRIES_ attempts # Helper function. Print $N pseudo-random bytes from a-zA-Z0-9. -rand_bytes_() +rand_bytes_ () { n_=$1 @@ -396,7 +396,7 @@ rand_bytes_() | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_ } -mktempd_() +mktempd_ () { case $# in 2);; -- 1.7.4.1.299.ga459d