Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jan 2025 15:22:41 GMT
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: afc38f1f23ac - main - sysctl: Add a regression test which runs sysctl -a
Message-ID:  <202501311522.50VFMfQi062320@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=afc38f1f23ac3b579144d0d1d0c3fadf735d57bd

commit afc38f1f23ac3b579144d0d1d0c3fadf735d57bd
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-01-31 15:20:04 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-01-31 15:22:24 +0000

    sysctl: Add a regression test which runs sysctl -a
    
    Run sysctl -a during the test suite so that KASAN/KMSAN have a chance to
    catch something.
    
    Inspired by https://jprx.io/cve-2024-54507/
    
    Reviewed by:    jhb, emaste
    MFC after:      2 weeks
    Sponsored by:   Klara, Inc.
    Differential Revision:  https://reviews.freebsd.org/D48659
---
 sbin/sysctl/tests/sysctl_test.sh | 57 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/sbin/sysctl/tests/sysctl_test.sh b/sbin/sysctl/tests/sysctl_test.sh
index e932626a9f14..dfc32a87b212 100644
--- a/sbin/sysctl/tests/sysctl_test.sh
+++ b/sbin/sysctl/tests/sysctl_test.sh
@@ -1,3 +1,6 @@
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
 # Copyright (c) 2022 Yoshihiro Ota <ota@j.email.ne.jp>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -20,12 +23,64 @@
 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
+#
 
 sysctl_name="kern.ostype"
 sysctl_value="FreeBSD"
 sysctl_type="string"
 sysctl_description="Operating system type"
 
+atf_test_case sysctl_aflag
+sysctl_aflag_head()
+{
+	atf_set "descr" "Exercise all sysctl handlers"
+}
+sysctl_aflag_body()
+{
+	# Avoid using atf_check here since sysctl -ao generates tons of
+	# output and it would all otherwise be saved.
+	sysctl -ao >/dev/null 2>stderr
+	if [ $? -ne 0 ]; then
+		atf_fail "sysctl -ao failed"
+	elif [ -s stderr ]; then
+		cat stderr
+		atf_fail "sysctl -ao printed to stderr"
+	fi
+}
+
+
+atf_test_case sysctl_aflag_jail
+sysctl_aflag_jail_head()
+{
+	atf_set "descr" "Exercise all sysctl handlers in a jail"
+	atf_set "require.user" "root"
+}
+sysctl_aflag_jail_body()
+{
+	local jail
+
+	jail=sysctl_test_aflag_jail
+
+	# Avoid using atf_check here since sysctl -ao generates tons of
+	# output and it would all otherwise be saved.
+	jail -c name=$jail command=sysctl -ao >/dev/null 2>stderr
+	if [ $? -ne 0 ]; then
+		atf_fail "sysctl -ao failed"
+	elif [ -s stderr ]; then
+		cat stderr
+		atf_fail "sysctl -ao printed to stderr"
+	fi
+
+	jail -c name=$jail vnet command=sysctl -ao >/dev/null 2>stderr
+	if [ $? -ne 0 ]; then
+		atf_fail "sysctl -ao failed"
+	elif [ -s stderr ]; then
+		cat stderr
+		atf_fail "sysctl -ao printed to stderr"
+	fi
+}
+
+
 atf_test_case sysctl_by_name
 sysctl_by_name_head()
 {
@@ -106,6 +161,8 @@ sysctl_nflag_tflag_dflag_body()
 
 atf_init_test_cases()
 {
+	atf_add_test_case sysctl_aflag
+	atf_add_test_case sysctl_aflag_jail
 	atf_add_test_case sysctl_by_name
 	atf_add_test_case sysctl_nflag
 	atf_add_test_case sysctl_eflag



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202501311522.50VFMfQi062320>