]> eyrie.org Git - kerberos/krb5-strength.git/blobdiff - tests/util/xmalloc-t
Declare fast forward from 3.1-2
[kerberos/krb5-strength.git] / tests / util / xmalloc-t
index c47c644aebd096d5c86c4e02a109deda2af6b594..b3afa31f81fe17a536d16156325071715b990395 100755 (executable)
@@ -3,11 +3,12 @@
 # Test suite for xmalloc and friends.
 #
 # The canonical version of this file is maintained in the rra-c-util package,
-# which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+# which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 #
 # Written by Russ Allbery <eagle@eyrie.org>
-# Copyright 2000, 2001, 2006, 2014 Russ Allbery <eagle@eyrie.org>
-# Copyright 2008, 2009, 2010, 2012
+# Copyright 2000-2001, 2006, 2014, 2016, 2019-2020
+#     Russ Allbery <eagle@eyrie.org>
+# Copyright 2008-2010, 2012
 #     The Board of Trustees of the Leland Stanford Junior University
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
+#
+# SPDX-License-Identifier: MIT
 
-. "$SOURCE/tap/libtap.sh"
-cd "$BUILD/util"
+. "$C_TAP_SOURCE/tap/libtap.sh"
+cd "$C_TAP_BUILD/util"
 
-# Run an xmalloc test.  Takes the description, the expectd exit status, the
+# Run an xmalloc test.  Takes the description, the expected exit status, the
 # output, and the arguments.
 ok_xmalloc () {
     local desc w_status w_output output status
@@ -64,26 +67,28 @@ if [ -z "$AUTHOR_TESTING" ] ; then
 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 +96,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 42" \
+    "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 71" \
+    "r" "30000000" "30000000"
+ok_xmalloc "reallocarray fail" 1 \
+    "failed to reallocarray 30000000 bytes at xmalloc.c line 100" \
+    "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 131" \
+    "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 177" \
+    "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 201" \
+    "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 225" \
+    "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 244" \
+    "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 42" \
+    "M" "30000000" "30000000"
+ok_xmalloc "realloc custom"      1 "realloc 30000000 xmalloc.c 71" \
+    "R" "30000000" "30000000"
+ok_xmalloc "reallocarray custom" 1 "reallocarray 30000000 xmalloc.c 100" \
+    "Y" "30000000" "30000000"
+ok_xmalloc "strdup custom"       1 "strdup 30000000 xmalloc.c 131" \
+    "S" "30000000" "30000000"
+ok_xmalloc "strndup custom"      1 "strndup 30000000 xmalloc.c 177" \
+    "N" "30000000" "30000000"
+ok_xmalloc "calloc custom"       1 "calloc 30000000 xmalloc.c 201" \
+    "C" "30000000" "30000000"
+ok_xmalloc "asprintf custom"     1 "asprintf 30000000 xmalloc.c 225" \
+    "A" "30000000" "30000000"
+ok_xmalloc "vasprintf custom"    1 "vasprintf 30000000 xmalloc.c 244" \
+    "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"