summaryrefslogtreecommitdiff
path: root/tests/util/xmalloc-t
diff options
context:
space:
mode:
authorRuss Allbery <eagle@eyrie.org>2014-07-11 20:18:41 -0700
committerRuss Allbery <rra@stanford.edu>2014-07-11 22:38:49 -0700
commitda0aba21779529d98436e42323fc12f702390969 (patch)
tree950e33ac99f2ff45303e939bf74f8bfbbb635215 /tests/util/xmalloc-t
parent2971570d0e90bd166d87eff14e9e42c095c9f614 (diff)
Update to rra-c-util 5.5 and C TAP Harness 3.1
Update to rra-c-util 5.5: * Use Lancaster Consensus environment variables to control tests. * Use calloc or reallocarray for protection against integer overflows. * Suppress warnings from Kerberos headers in non-system paths. * Assume calloc initializes pointers to NULL. * Assume free(NULL) is properly ignored. * Improve error handling in xasprintf and xvasprintf. * Check the return status of snprintf and vsnprintf properly. * Preserve errno if snprintf fails in vasprintf replacement. Update to C TAP Harness 3.1: * Reopen standard input to /dev/null when running a test list. * Don't leak extraneous file descriptors to tests. * Suppress lazy plans and test summaries if the test failed with bail. * runtests now treats the command line as a list of tests by default. * The full test executable path can now be passed to runtests -o. * Improved harness output for tests with lazy plans. * Improved harness output to a terminal for some abort cases. * Flush harness output after each test even when not on a terminal. Change-Id: I05161eb3d3be49a98f7762e876cb114da0c84e9a Reviewed-on: https://gerrit.stanford.edu/1529 Reviewed-by: Russ Allbery <rra@stanford.edu> Tested-by: Russ Allbery <rra@stanford.edu>
Diffstat (limited to 'tests/util/xmalloc-t')
-rwxr-xr-xtests/util/xmalloc-t121
1 files changed, 65 insertions, 56 deletions
diff --git a/tests/util/xmalloc-t b/tests/util/xmalloc-t
index 74e4bbd..d52c448 100755
--- a/tests/util/xmalloc-t
+++ b/tests/util/xmalloc-t
@@ -6,7 +6,7 @@
# which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
#
# Written by Russ Allbery <eagle@eyrie.org>
-# Copyright 2000, 2001, 2006 Russ Allbery <eagle@eyrie.org>
+# Copyright 2000, 2001, 2006, 2014 Russ Allbery <eagle@eyrie.org>
# Copyright 2008, 2009, 2010, 2012
# The Board of Trustees of the Leland Stanford Junior University
#
@@ -59,31 +59,33 @@ ok_xmalloc () {
# failures in automated testing have been problems with the assumptions around
# memory allocation or problems with the test suite, not problems with the
# underlying xmalloc code.
-if [ -z "$RRA_MAINTAINER_TESTS" ] ; then
- skip_all 'xmalloc tests only run for maintainer'
+if [ -z "$AUTHOR_TESTING" ] ; then
+ skip_all 'xmalloc tests only run for author'
fi
# Total tests.
-plan 36
+plan 41
# First run the tests expected to succeed.
-ok_xmalloc "malloc small" 0 "" "m" "21" "0"
-ok_xmalloc "malloc large" 0 "" "m" "5500000" "0"
-ok_xmalloc "malloc zero" 0 "" "m" "0" "0"
-ok_xmalloc "realloc small" 0 "" "r" "21" "0"
-ok_xmalloc "realloc large" 0 "" "r" "5500000" "0"
-ok_xmalloc "strdup small" 0 "" "s" "21" "0"
-ok_xmalloc "strdup large" 0 "" "s" "5500000" "0"
-ok_xmalloc "strndup small" 0 "" "n" "21" "0"
-ok_xmalloc "strndup large" 0 "" "n" "5500000" "0"
-ok_xmalloc "calloc small" 0 "" "c" "24" "0"
-ok_xmalloc "calloc large" 0 "" "c" "5500000" "0"
-ok_xmalloc "asprintf small" 0 "" "a" "24" "0"
-ok_xmalloc "asprintf large" 0 "" "a" "5500000" "0"
-ok_xmalloc "vasprintf small" 0 "" "v" "24" "0"
-ok_xmalloc "vasprintf large" 0 "" "v" "5500000" "0"
+ok_xmalloc "malloc small" 0 "" "m" "21" "0"
+ok_xmalloc "malloc large" 0 "" "m" "30000000" "0"
+ok_xmalloc "malloc zero" 0 "" "m" "0" "0"
+ok_xmalloc "realloc small" 0 "" "r" "21" "0"
+ok_xmalloc "realloc large" 0 "" "r" "30000000" "0"
+ok_xmalloc "reallocarray small" 0 "" "y" "20" "0"
+ok_xmalloc "reallocarray large" 0 "" "y" "30000000" "0"
+ok_xmalloc "strdup small" 0 "" "s" "21" "0"
+ok_xmalloc "strdup large" 0 "" "s" "30000000" "0"
+ok_xmalloc "strndup small" 0 "" "n" "21" "0"
+ok_xmalloc "strndup large" 0 "" "n" "30000000" "0"
+ok_xmalloc "calloc small" 0 "" "c" "24" "0"
+ok_xmalloc "calloc large" 0 "" "c" "30000000" "0"
+ok_xmalloc "asprintf small" 0 "" "a" "24" "0"
+ok_xmalloc "asprintf large" 0 "" "a" "30000000" "0"
+ok_xmalloc "vasprintf small" 0 "" "v" "24" "0"
+ok_xmalloc "vasprintf large" 0 "" "v" "30000000" "0"
-# Now limit our memory to 5.5MB and then try the large ones again, all of
+# Now limit our memory to 30MB and then try the large ones again, all of
# which should fail.
#
# The exact memory limits used here are essentially black magic. They need to
@@ -91,53 +93,60 @@ ok_xmalloc "vasprintf large" 0 "" "v" "5500000" "0"
# but not so large that we can't reasonably expect to allocate that much
# memory normally. The amount of memory required varies a lot based on what
# shared libraries are loaded, and if it's too small, all memory allocations
-# fail. 5.5MB seems to work reasonably well on both Solaris and Linux.
+# fail. 30MB seems to work reasonably well on both Solaris and Linux, even
+# when the program is linked with additional libraries.
#
# We assume that there are enough miscellaneous allocations that an allocation
# exactly as large as the limit will always fail.
ok_xmalloc "malloc fail" 1 \
- "failed to malloc 5500000 bytes at xmalloc.c line 38" \
- "m" "5500000" "5500000"
+ "failed to malloc 30000000 bytes at xmalloc.c line 38" \
+ "m" "30000000" "30000000"
ok_xmalloc "realloc fail" 1 \
- "failed to realloc 5500000 bytes at xmalloc.c line 66" \
- "r" "5500000" "5500000"
+ "failed to realloc 30000000 bytes at xmalloc.c line 66" \
+ "r" "30000000" "30000000"
+ok_xmalloc "reallocarray fail" 1 \
+ "failed to reallocarray 30000000 bytes at xmalloc.c line 96" \
+ "y" "30000000" "30000000"
ok_xmalloc "strdup fail" 1 \
- "failed to strdup 5500000 bytes at xmalloc.c line 97" \
- "s" "5500000" "5500000"
+ "failed to strdup 30000000 bytes at xmalloc.c line 127" \
+ "s" "30000000" "30000000"
ok_xmalloc "strndup fail" 1 \
- "failed to strndup 5500000 bytes at xmalloc.c line 143" \
- "n" "5500000" "5500000"
+ "failed to strndup 30000000 bytes at xmalloc.c line 173" \
+ "n" "30000000" "30000000"
ok_xmalloc "calloc fail" 1 \
- "failed to calloc 5500000 bytes at xmalloc.c line 167" \
- "c" "5500000" "5500000"
+ "failed to calloc 30000000 bytes at xmalloc.c line 197" \
+ "c" "30000000" "30000000"
ok_xmalloc "asprintf fail" 1 \
- "failed to asprintf 5500000 bytes at xmalloc.c line 191" \
- "a" "5500000" "5500000"
+ "failed to asprintf 30000000 bytes at xmalloc.c line 221" \
+ "a" "30000000" "30000000"
ok_xmalloc "vasprintf fail" 1 \
- "failed to vasprintf 5500000 bytes at xmalloc.c line 210" \
- "v" "5500000" "5500000"
+ "failed to vasprintf 30000000 bytes at xmalloc.c line 240" \
+ "v" "30000000" "30000000"
# Check our custom error handler.
-ok_xmalloc "malloc custom" 1 "malloc 5500000 xmalloc.c 38" \
- "M" "5500000" "5500000"
-ok_xmalloc "realloc custom" 1 "realloc 5500000 xmalloc.c 66" \
- "R" "5500000" "5500000"
-ok_xmalloc "strdup custom" 1 "strdup 5500000 xmalloc.c 97" \
- "S" "5500000" "5500000"
-ok_xmalloc "strndup custom" 1 "strndup 5500000 xmalloc.c 143" \
- "N" "5500000" "5500000"
-ok_xmalloc "calloc custom" 1 "calloc 5500000 xmalloc.c 167" \
- "C" "5500000" "5500000"
-ok_xmalloc "asprintf custom" 1 "asprintf 5500000 xmalloc.c 191" \
- "A" "5500000" "5500000"
-ok_xmalloc "vasprintf custom" 1 "vasprintf 5500000 xmalloc.c 210" \
- "V" "5500000" "5500000"
+ok_xmalloc "malloc custom" 1 "malloc 30000000 xmalloc.c 38" \
+ "M" "30000000" "30000000"
+ok_xmalloc "realloc custom" 1 "realloc 30000000 xmalloc.c 66" \
+ "R" "30000000" "30000000"
+ok_xmalloc "reallocarray custom" 1 "reallocarray 30000000 xmalloc.c 96" \
+ "Y" "30000000" "30000000"
+ok_xmalloc "strdup custom" 1 "strdup 30000000 xmalloc.c 127" \
+ "S" "30000000" "30000000"
+ok_xmalloc "strndup custom" 1 "strndup 30000000 xmalloc.c 173" \
+ "N" "30000000" "30000000"
+ok_xmalloc "calloc custom" 1 "calloc 30000000 xmalloc.c 197" \
+ "C" "30000000" "30000000"
+ok_xmalloc "asprintf custom" 1 "asprintf 30000000 xmalloc.c 221" \
+ "A" "30000000" "30000000"
+ok_xmalloc "vasprintf custom" 1 "vasprintf 30000000 xmalloc.c 240" \
+ "V" "30000000" "30000000"
# Check the smaller ones again just for grins.
-ok_xmalloc "malloc retry" 0 "" "m" "21" "5500000"
-ok_xmalloc "realloc retry" 0 "" "r" "32" "5500000"
-ok_xmalloc "strdup retry" 0 "" "s" "64" "5500000"
-ok_xmalloc "strndup retry" 0 "" "n" "20" "5500000"
-ok_xmalloc "calloc retry" 0 "" "c" "24" "5500000"
-ok_xmalloc "asprintf retry" 0 "" "a" "30" "5500000"
-ok_xmalloc "vasprintf retry" 0 "" "v" "35" "5500000"
+ok_xmalloc "malloc retry" 0 "" "m" "21" "30000000"
+ok_xmalloc "realloc retry" 0 "" "r" "32" "30000000"
+ok_xmalloc "reallocarray retry" 0 "" "y" "32" "30000000"
+ok_xmalloc "strdup retry" 0 "" "s" "64" "30000000"
+ok_xmalloc "strndup retry" 0 "" "n" "20" "30000000"
+ok_xmalloc "calloc retry" 0 "" "c" "24" "30000000"
+ok_xmalloc "asprintf retry" 0 "" "a" "30" "30000000"
+ok_xmalloc "vasprintf retry" 0 "" "v" "35" "30000000"