summaryrefslogtreecommitdiff
path: root/tests/misc/timeout-parameters.sh
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2016-04-20 14:03:05 +0100
committerPádraig Brady <P@draigBrady.com>2016-04-21 19:34:18 +0100
commitff6cc22d062c493c9fee27cfe1d2e6328d502a43 (patch)
treedf43a7f32e55778478f5b3833373066c8469b0e0 /tests/misc/timeout-parameters.sh
parent163c70d970ca3e216e24970fc5ebb1b48fdb855e (diff)
downloadcoreutils-ff6cc22d062c493c9fee27cfe1d2e6328d502a43.tar.xz
tests: avoid potential overflows with `expr`
* cfg.mk (sc_prohibit_expr_unsigned): expr uses intmax_t internally when GMP is not available, so flag any uses of unsigned limits. * tests/misc/timeout-parameters.sh: Remove the overflow related to UINT_MAX as it's handled by the following case. Change the following case from 99... to $TIME_T_OFLOW to be more expressive in what it's actually testing. Directly check that commands succeed, rather than inspecting $? afterwards. * tests/dd/skip-seek-past-dev.sh: Guard against large device sizes. * tests/id/setgid.sh: Protect: Guard against large group IDs. * tests/misc/cut-huge-range.sh: Tweak comment to avoid syntax check. It's tempting to simplify to just skip the test if expr fails, but SIZE_MAX > INTMAX_MAX is the common case.
Diffstat (limited to 'tests/misc/timeout-parameters.sh')
-rwxr-xr-xtests/misc/timeout-parameters.sh19
1 files changed, 6 insertions, 13 deletions
diff --git a/tests/misc/timeout-parameters.sh b/tests/misc/timeout-parameters.sh
index 881e60d66..14c9b669b 100755
--- a/tests/misc/timeout-parameters.sh
+++ b/tests/misc/timeout-parameters.sh
@@ -38,29 +38,22 @@ test $? = 125 || fail=1
# It was seen on 32 bit Linux/HPPA that a kernel time_t overflowed,
# thus causing the timer to fire immediately.
# So verify that doesn't happen before checking large timeouts
-KERNEL_OVERFLOW_LIMIT=$(expr $TIME_T_MAX - $(date +%s) + 100)
+KERNEL_OVERFLOW_LIMIT=$(expr $TIME_T_MAX - $(date +%s) + 100) ||
+ skip_ "failed to adjust TIME_T_MAX $TIME_T_MAX"
timeout $KERNEL_OVERFLOW_LIMIT sleep 0
if test $? != 124; then
# timeout overflow
- timeout $UINT_OFLOW sleep 0
- test $? = 0 || fail=1
+ timeout $UINT_OFLOW sleep 0 || fail=1
# timeout overflow
- timeout $(expr $UINT_MAX / 86400 + 1)d sleep 0
- test $? = 0 || fail=1
-
- # timeout overflow
- timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0
- test $? = 0 || fail=1
+ timeout ${TIME_T_OFLOW}d sleep 0 || fail=1
# floating point notation
- timeout 2.34e+5d sleep 0
- test $? = 0 || fail=1
+ timeout 2.34e+5d sleep 0 || fail=1
fi
# floating point notation
-timeout 2.34 sleep 0
-test $? = 0 || fail=1
+timeout 2.34 sleep 0 || fail=1
# nanoseconds potentially supported
timeout .999999999 sleep 0 || fail=1