summaryrefslogtreecommitdiffstats
path: root/tests/misc/timeout-large-parameters.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc/timeout-large-parameters.sh')
-rwxr-xr-xtests/misc/timeout-large-parameters.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/misc/timeout-large-parameters.sh b/tests/misc/timeout-large-parameters.sh
new file mode 100755
index 0000000..3445617
--- /dev/null
+++ b/tests/misc/timeout-large-parameters.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Validate large timeout parameters
+# Separated from standard parameter testing due to kernel overflow bugs.
+
+# Copyright (C) 2008-2020 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 <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ timeout
+getlimits_
+
+# It was seen on 32 bit Linux/HPPA and OpenIndiana 11
+# that a kernel time_t overflowing cause the timer to fire immediately.
+# This is still racy, but unlikely to cause an issue unless
+# timeout can't process the timer firing within 3 seconds.
+timeout $TIME_T_OFLOW sleep 3
+if test $? = 124; then
+ skip_ 'timeout $TIME_T_OFLOW ..., timed out immediately!'
+fi
+
+# timeout overflow
+timeout $UINT_OFLOW sleep 0 || fail=1
+
+# timeout overflow
+timeout ${TIME_T_OFLOW}d sleep 0 || fail=1
+
+# floating point notation
+timeout 2.34e+5d sleep 0 || fail=1
+
+# floating point overflow
+timeout $LDBL_MAX sleep 0 || fail=1
+returns_ 125 timeout -- -$LDBL_MAX sleep 0 || fail=1
+
+Exit $fail