summaryrefslogtreecommitdiff
path: root/tests/util/xmalloc-t
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2013-02-27 14:25:37 -0800
committerRuss Allbery <rra@stanford.edu>2013-02-27 16:52:32 -0800
commit234e3805c524a7432caed8be328df6e2fbfe9afb (patch)
treed40473e103f8cfacec000959c2ae3ea83e8e86b2 /tests/util/xmalloc-t
parent7a572127a7305a17bf84c26e66e65ab37f66b77d (diff)
Update to rra-c-util 4.8 and C TAP Harness 1.12
Update to rra-c-util 4.8: * Look for krb5-config in /usr/kerberos/bin after the user's PATH. * Kerberos library probing fixes without transitive shared libraries. * Fix Autoconf warnings when probing for AIX's bundled Kerberos. * Avoid using krb5-config if --with-{krb5,gssapi}-{include,lib} given. * Correctly remove -I/usr/include from Kerberos and GSS-API flags. * Build on systems where krb5/krb5.h exists but krb5.h does not. * Pass --deps to krb5-config unless --enable-reduced-depends was used. * Do not use krb5-config results unless gssapi is supported. * Fix probing for Heimdal's libroken to work with older versions. * Update warning flags for GCC 4.6.1. * Update utility library and test suite for newer GCC warnings. * Fix broken GCC attribute markers causing compilation problems. * Suppress warnings on compilers that support gcc's __attribute__. * Add notices to all files copied over from rra-c-util. * Fix warnings when reporting memory allocation failure in messages.c. * Fix message utility library compiler warnings on 64-bit systems. * Include strings.h for additional POSIX functions where found. * Use an atexit handler to clean up after Kerberos tests. * Kerberos test configuration now goes in tests/config. * The principal of the test keytab is determined automatically. * Simplify the test suite calls for Kerberos and remctl tests. * Check for a missing ssize_t. * Improve the xstrndup utility function. * Checked asprintf variants are now void functions and cannot fail. * Fix use of long long in portable/mkstemp.c. * Fix test suite portability to Solaris. * Substantial improvements to the POD syntax and spelling checks. Update to C TAP Harness 1.12: * Fix compliation of runtests with more aggressive warnings. * Add a more complete usage message and a -h command-line flag. * Flush stderr before printing output from tests. * Better handle running shell tests without BUILD and SOURCE set. * Fix runtests to honor -s even if BUILD and -b aren't given. * runtests now frees all allocated resources on exit. * Only use feature-test macros when requested or built with gcc -ansi. * Drop is_double from the C TAP library to avoid requiring -lm. * Avoid using local in the shell libtap.sh library. * Suppress warnings on compilers that support gcc's __attribute__. Change-Id: I394294d5486ac1ce265c7713bec71a148aaaf1ce Reviewed-on: https://gerrit.stanford.edu/841 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-t130
1 files changed, 73 insertions, 57 deletions
diff --git a/tests/util/xmalloc-t b/tests/util/xmalloc-t
index 67d95f6..b6c6dfd 100755
--- a/tests/util/xmalloc-t
+++ b/tests/util/xmalloc-t
@@ -2,14 +2,31 @@
#
# 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/>.
+#
# Written by Russ Allbery <rra@stanford.edu>
-# Copyright 2008, 2009, 2010 Board of Trustees, Leland Stanford Jr. University
-# Copyright 2004, 2005, 2006
-# by Internet Systems Consortium, Inc. ("ISC")
-# Copyright 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003 by The Internet Software Consortium and Rich Salz
+# Copyright 2000, 2001, 2006 Russ Allbery <rra@stanford.edu>
+# Copyright 2008, 2009, 2010, 2012
+# The Board of Trustees of the Leland Stanford Junior University
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
#
-# See LICENSE for licensing terms.
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# 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.
. "$SOURCE/tap/libtap.sh"
cd "$BUILD/util"
@@ -24,18 +41,16 @@ ok_xmalloc () {
shift
w_output="$1"
shift
- output=`./xmalloc "$@" 2>&1`
+ output=`strip_colon_error ./xmalloc "$@" 2>&1`
status=$?
- if [ "$w_status" -ne 0 ] ; then
- output=`echo "$output" | sed 's/:.*//'`
- fi
if [ $status = $w_status ] && [ x"$output" = x"$w_output" ] ; then
ok "$desc" true
elif [ $status = 2 ] ; then
+ diag "$output"
skip "no data limit support"
else
- echo "# saw: ($status) $output"
- echo "# not: ($w_status) $w_output"
+ diag "saw: ($status) $output"
+ diag "not: ($w_status) $w_output"
ok "$desc" false
fi
}
@@ -53,75 +68,76 @@ plan 36
# First run the tests expected to succeed.
ok_xmalloc "malloc small" 0 "" "m" "21" "0"
-ok_xmalloc "malloc large" 0 "" "m" "3500000" "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" "3500000" "0"
+ok_xmalloc "realloc large" 0 "" "r" "5500000" "0"
ok_xmalloc "strdup small" 0 "" "s" "21" "0"
-ok_xmalloc "strdup large" 0 "" "s" "3500000" "0"
+ok_xmalloc "strdup large" 0 "" "s" "5500000" "0"
ok_xmalloc "strndup small" 0 "" "n" "21" "0"
-ok_xmalloc "strndup large" 0 "" "n" "3500000" "0"
+ok_xmalloc "strndup large" 0 "" "n" "5500000" "0"
ok_xmalloc "calloc small" 0 "" "c" "24" "0"
-ok_xmalloc "calloc large" 0 "" "c" "3500000" "0"
+ok_xmalloc "calloc large" 0 "" "c" "5500000" "0"
ok_xmalloc "asprintf small" 0 "" "a" "24" "0"
-ok_xmalloc "asprintf large" 0 "" "a" "3500000" "0"
+ok_xmalloc "asprintf large" 0 "" "a" "5500000" "0"
ok_xmalloc "vasprintf small" 0 "" "v" "24" "0"
-ok_xmalloc "vasprintf large" 0 "" "v" "3500000" "0"
+ok_xmalloc "vasprintf large" 0 "" "v" "5500000" "0"
-# Now limit our memory to 3.5MB and then try the large ones again, all of
+# Now limit our memory to 5.5MB 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
# be large enough to allow the program to be loaded and do small allocations,
# but not so large that we can't reasonably expect to allocate that much
-# memory normally. 3.5MB seems to work reasonably well on both Solaris and
-# Linux.
+# 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.
#
# 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 3500000 bytes at xmalloc.c line 38" \
- "m" "3500000" "3500000"
+ "failed to malloc 5500000 bytes at xmalloc.c line 38" \
+ "m" "5500000" "5500000"
ok_xmalloc "realloc fail" 1 \
- "failed to realloc 3500000 bytes at xmalloc.c line 66" \
- "r" "3500000" "3500000"
+ "failed to realloc 5500000 bytes at xmalloc.c line 66" \
+ "r" "5500000" "5500000"
ok_xmalloc "strdup fail" 1 \
- "failed to strdup 3500000 bytes at xmalloc.c line 97" \
- "s" "3500000" "3500000"
+ "failed to strdup 5500000 bytes at xmalloc.c line 97" \
+ "s" "5500000" "5500000"
ok_xmalloc "strndup fail" 1 \
- "failed to strndup 3500000 bytes at xmalloc.c line 124" \
- "n" "3500000" "3500000"
+ "failed to strndup 5500000 bytes at xmalloc.c line 143" \
+ "n" "5500000" "5500000"
ok_xmalloc "calloc fail" 1 \
- "failed to calloc 3500000 bytes at xmalloc.c line 148" \
- "c" "3500000" "3500000"
+ "failed to calloc 5500000 bytes at xmalloc.c line 167" \
+ "c" "5500000" "5500000"
ok_xmalloc "asprintf fail" 1 \
- "failed to asprintf 3500000 bytes at xmalloc.c line 172" \
- "a" "3500000" "3500000"
+ "failed to asprintf 5500000 bytes at xmalloc.c line 191" \
+ "a" "5500000" "5500000"
ok_xmalloc "vasprintf fail" 1 \
- "failed to vasprintf 3500000 bytes at xmalloc.c line 192" \
- "v" "3500000" "3500000"
+ "failed to vasprintf 5500000 bytes at xmalloc.c line 210" \
+ "v" "5500000" "5500000"
# Check our custom error handler.
-ok_xmalloc "malloc custom" 1 "malloc 3500000 xmalloc.c 38" \
- "M" "3500000" "3500000"
-ok_xmalloc "realloc custom" 1 "realloc 3500000 xmalloc.c 66" \
- "R" "3500000" "3500000"
-ok_xmalloc "strdup custom" 1 "strdup 3500000 xmalloc.c 97" \
- "S" "3500000" "3500000"
-ok_xmalloc "strndup custom" 1 "strndup 3500000 xmalloc.c 124" \
- "N" "3500000" "3500000"
-ok_xmalloc "calloc custom" 1 "calloc 3500000 xmalloc.c 148" \
- "C" "3500000" "3500000"
-ok_xmalloc "asprintf custom" 1 "asprintf 3500000 xmalloc.c 172" \
- "A" "3500000" "3500000"
-ok_xmalloc "vasprintf custom" 1 "vasprintf 3500000 xmalloc.c 192" \
- "V" "3500000" "3500000"
+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"
# Check the smaller ones again just for grins.
-ok_xmalloc "malloc retry" 0 "" "m" "21" "3500000"
-ok_xmalloc "realloc retry" 0 "" "r" "32" "3500000"
-ok_xmalloc "strdup retry" 0 "" "s" "64" "3500000"
-ok_xmalloc "strndup retry" 0 "" "n" "20" "3500000"
-ok_xmalloc "calloc retry" 0 "" "c" "24" "3500000"
-ok_xmalloc "asprintf retry" 0 "" "a" "30" "3500000"
-ok_xmalloc "vasprintf retry" 0 "" "v" "35" "3500000"
+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"