Module Name: src
Committed By: christos
Date: Thu Jan 23 12:32:39 UTC 2025
Modified Files:
src/tests/lib/libexecinfo: Makefile
Added Files:
src/tests/lib/libexecinfo: t_backtrace_sandbox.c
Log Message:
new sandbox test (Kyle Evans @ FreeBSD)
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/tests/lib/libexecinfo/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/lib/libexecinfo/t_backtrace_sandbox.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/libexecinfo/Makefile
diff -u src/tests/lib/libexecinfo/Makefile:1.8 src/tests/lib/libexecinfo/Makefile:1.9
--- src/tests/lib/libexecinfo/Makefile:1.8 Tue Nov 23 18:29:55 2021
+++ src/tests/lib/libexecinfo/Makefile Thu Jan 23 07:32:38 2025
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2021/11/23 23:29:55 thorpej Exp $
+# $NetBSD: Makefile,v 1.9 2025/01/23 12:32:38 christos Exp $
.include <bsd.own.mk>
@@ -6,6 +6,7 @@ TESTSDIR= ${TESTSBASE}/lib/libexecinfo
TESTS_C+= t_backtrace
TESTS_C+= t_sig_backtrace
+TESTS_C+= t_backtrace_sandbox
STRIPFLAG=
LDADD+= -lexecinfo -lelf
Added files:
Index: src/tests/lib/libexecinfo/t_backtrace_sandbox.c
diff -u /dev/null src/tests/lib/libexecinfo/t_backtrace_sandbox.c:1.1
--- /dev/null Thu Jan 23 07:32:39 2025
+++ src/tests/lib/libexecinfo/t_backtrace_sandbox.c Thu Jan 23 07:32:38 2025
@@ -0,0 +1,66 @@
+/* $NetBSD: t_backtrace_sandbox.c,v 1.1 2025/01/23 12:32:38 christos Exp $ */
+
+/*-
+ * Copyright (c) 2025 Kyle Evans <[email protected]>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: t_backtrace_sandbox.c,v 1.1 2025/01/23 12:32:38 christos Exp $");
+
+#include <sys/param.h>
+#ifdef __FreeBSD__
+#include <sys/capsicum.h>
+#define __arraycount(a) nitems(a)
+#endif
+
+#include <execinfo.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <atf-c.h>
+
+#define BT_FUNCTIONS 10
+
+ATF_TC(backtrace_sandbox);
+ATF_TC_HEAD(backtrace_sandbox, tc)
+{
+ atf_tc_set_md_var(tc, "descr",
+ "Test backtrace_sandbox_init(3) in sandbox");
+#ifndef __FreeBSD__
+ atf_tc_set_md_var(tc, "require.user", "root");
+#endif
+}
+
+ATF_TC_BODY(backtrace_sandbox, tc)
+{
+ void *addr[BT_FUNCTIONS];
+ char **syms;
+ size_t frames;
+
+ frames = backtrace(addr, __arraycount(addr));
+ ATF_REQUIRE(frames > 0);
+
+ syms = backtrace_symbols_fmt(addr, frames, "%n");
+ ATF_REQUIRE(strcmp(syms[0], "atfu_backtrace_sandbox_body") == 0);
+
+ backtrace_sandbox_init();
+#ifdef __FreeBSD__
+ cap_enter();
+#else
+ ATF_REQUIRE(chroot("/tmp") == 0);
+#endif
+
+ syms = backtrace_symbols_fmt(addr, frames, "%n");
+ ATF_REQUIRE(strcmp(syms[0], "atfu_backtrace_sandbox_body") == 0);
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+
+ ATF_TP_ADD_TC(tp, backtrace_sandbox);
+
+ return atf_no_error();
+}