From: Florian Weimer Date: Fri, 12 Feb 2016 11:57:40 +0000 (+0100) Subject: hsearch_r: Apply VM size limit in test case X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5bbc09ccc07fb9b61b7f0f5bf531d7c8c164469;p=thirdparty%2Fglibc.git hsearch_r: Apply VM size limit in test case (cherry picked from commit f34f146e682d8d529dcf64b3c2781bf3f2f05f6c) --- diff --git a/ChangeLog b/ChangeLog index cd343c70902..c2b1307d4df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-05-24 Florian Weimer + + * misc/bug18240.c (do_test): Set RLIMIT_AS. + 2016-05-24 Paul Eggert [BZ #18240] diff --git a/misc/bug18240.c b/misc/bug18240.c index 4b26865a316..773586ee105 100644 --- a/misc/bug18240.c +++ b/misc/bug18240.c @@ -22,6 +22,7 @@ #include #include #include +#include static void test_size (size_t size) @@ -58,6 +59,27 @@ test_size (size_t size) static int do_test (void) { + /* Limit the size of the process, so that memory allocation will + fail without impacting the entire system. */ + { + struct rlimit limit; + if (getrlimit (RLIMIT_AS, &limit) != 0) + { + printf ("getrlimit (RLIMIT_AS) failed: %m\n"); + return 1; + } + long target = 100 * 1024 * 1024; + if (limit.rlim_cur == RLIM_INFINITY || limit.rlim_cur > target) + { + limit.rlim_cur = target; + if (setrlimit (RLIMIT_AS, &limit) != 0) + { + printf ("setrlimit (RLIMIT_AS) failed: %m\n"); + return 1; + } + } + } + test_size (500); test_size (-1); test_size (-3);