Module Name: src Committed By: riastradh Date: Thu Dec 7 16:54:44 UTC 2023
Modified Files: src/tests/lib/libc/sys: Makefile t_setrlimit.c Log Message: t_setrlimit: Narrow the scope of stack-protector warning suppression. To generate a diff of this commit: cvs rdiff -u -r1.75 -r1.76 src/tests/lib/libc/sys/Makefile cvs rdiff -u -r1.10 -r1.11 src/tests/lib/libc/sys/t_setrlimit.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/lib/libc/sys/Makefile diff -u src/tests/lib/libc/sys/Makefile:1.75 src/tests/lib/libc/sys/Makefile:1.76 --- src/tests/lib/libc/sys/Makefile:1.75 Fri Nov 24 17:19:55 2023 +++ src/tests/lib/libc/sys/Makefile Thu Dec 7 16:54:44 2023 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.75 2023/11/24 17:19:55 christos Exp $ +# $NetBSD: Makefile,v 1.76 2023/12/07 16:54:44 riastradh Exp $ MKMAN= no @@ -158,6 +158,5 @@ CWARNFLAGS.gcc+= ${CC_WNO_ADDRESS_OF_PAC # Explicitly breaks this COPTS.t_wait.c+= ${CC_WNO_ARRAY_BOUNDS} ${CC_WNO_STRINGOP_OVERFLOW} -COPTS.t_setrlimit.c+= -Wno-error=stack-protector .include <bsd.test.mk> Index: src/tests/lib/libc/sys/t_setrlimit.c diff -u src/tests/lib/libc/sys/t_setrlimit.c:1.10 src/tests/lib/libc/sys/t_setrlimit.c:1.11 --- src/tests/lib/libc/sys/t_setrlimit.c:1.10 Wed Nov 22 02:20:34 2023 +++ src/tests/lib/libc/sys/t_setrlimit.c Thu Dec 7 16:54:44 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: t_setrlimit.c,v 1.10 2023/11/22 02:20:34 riastradh Exp $ */ +/* $NetBSD: t_setrlimit.c,v 1.11 2023/12/07 16:54:44 riastradh Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_setrlimit.c,v 1.10 2023/11/22 02:20:34 riastradh Exp $"); +__RCSID("$NetBSD: t_setrlimit.c,v 1.11 2023/12/07 16:54:44 riastradh Exp $"); #include <sys/resource.h> #include <sys/mman.h> @@ -534,6 +534,26 @@ ATF_TC_HEAD(setrlimit_stack_growshrink, } /* + * checkstackchild(n) + * + * Allocate an array of size n on the stack, and verify it can be + * used. If it can't be used, this will crash with SIGSEGV, + * deliberately. + */ +_Pragma("GCC diagnostic push") +_Pragma("GCC diagnostic ignored \"-Wstack-protector\"") +static void +checkstackchild(size_t n) +{ + volatile char *const x = alloca(n); + size_t i; + + for (i = 0; i < n; i++) + x[i] = 0x1a; +} +_Pragma("GCC diagnostic pop") + +/* * checkstack(n, expectsegv) * * Check whether we can allocate an array of size n on the stack. @@ -555,14 +575,11 @@ static void checkstack(size_t n, int expectsegv) { pid_t forked, waited; - size_t i; int status; RL(forked = fork()); if (forked == 0) { /* child */ - volatile char *const x = alloca(n); - for (i = 0; i < n; i++) - x[i] = 0x1a; + checkstackchild(n); _exit(expectsegv); }