]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tail: add another test to exercise abort-inducing flaw in tail -F
authorJim Meyering <meyering@redhat.com>
Tue, 29 Dec 2009 12:47:10 +0000 (13:47 +0100)
committerJim Meyering <meyering@redhat.com>
Tue, 29 Dec 2009 16:01:54 +0000 (17:01 +0100)
* tests/tail-2/inotify-hash-abuse2: New test, based on a reproducer
by Rob Wortman.
* tests/Makefile.am (TESTS): Add it.

tests/Makefile.am
tests/tail-2/inotify-hash-abuse2 [new file with mode: 0755]

index 35ea8b234c5d8be9d807d977e7b2347091ff1038..6ef7ad802b2abe5f250945c48042f99e6eb90451 100644 (file)
@@ -81,6 +81,7 @@ TESTS =                                               \
   rm/cycle                                     \
   cp/link-heap                                 \
   tail-2/inotify-hash-abuse                    \
+  tail-2/inotify-hash-abuse2                   \
   tail-2/inotify-rotate                                \
   chmod/no-x                                   \
   chgrp/basic                                  \
diff --git a/tests/tail-2/inotify-hash-abuse2 b/tests/tail-2/inotify-hash-abuse2
new file mode 100755 (executable)
index 0000000..2f59eb4
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Exercise an abort-inducing flaw in inotify-enabled tail -F.
+# Like inotify-hash-abuse, but without a hard-coded "9".
+
+# Copyright (C) 2009 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/>.
+
+if test "$VERBOSE" = yes; then
+  set -x
+  tail --version
+fi
+
+. $srcdir/test-lib.sh
+
+touch f || framework_failure
+
+debug='---disable-inotify -s .001'
+debug=
+timeout 10 tail $debug -F f & pid=$!
+
+for i in $(seq 200); do
+  kill -0 $pid || break;
+  mv f g
+  touch f
+done
+
+# Fixed tail will not have aborted.  Kill it.
+kill -HUP $pid
+
+wait $pid
+st=$?
+
+case $st in
+  129) ;;
+  *) echo tail died via unexpected signal: $st; fail=1;;
+esac
+
+Exit $fail