aboutsummaryrefslogtreecommitdiff
path: root/sbin/ifconfig/tests
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/ifconfig/tests')
-rw-r--r--sbin/ifconfig/tests/Makefile7
-rw-r--r--sbin/ifconfig/tests/Makefile.depend1
-rw-r--r--sbin/ifconfig/tests/inet6.sh83
3 files changed, 87 insertions, 4 deletions
diff --git a/sbin/ifconfig/tests/Makefile b/sbin/ifconfig/tests/Makefile
index 93967c705175..e902f262552a 100644
--- a/sbin/ifconfig/tests/Makefile
+++ b/sbin/ifconfig/tests/Makefile
@@ -1,7 +1,8 @@
-# $FreeBSD$
+NETBSD_ATF_TESTS_SH= nonexistent_test
+ATF_TESTS_SH+= inet6
-NETBSD_ATF_TESTS_SH= nonexistent_test
+TEST_METADATA+= execenv="jail"
+TEST_METADATA+= execenv_jail_params="vnet allow.raw_sockets"
.include <netbsd-tests.test.mk>
-
.include <bsd.test.mk>
diff --git a/sbin/ifconfig/tests/Makefile.depend b/sbin/ifconfig/tests/Makefile.depend
index f80275d86ab1..11aba52f82cf 100644
--- a/sbin/ifconfig/tests/Makefile.depend
+++ b/sbin/ifconfig/tests/Makefile.depend
@@ -1,4 +1,3 @@
-# $FreeBSD$
# Autogenerated - do NOT edit!
DIRDEPS = \
diff --git a/sbin/ifconfig/tests/inet6.sh b/sbin/ifconfig/tests/inet6.sh
new file mode 100644
index 000000000000..edfd88d93af7
--- /dev/null
+++ b/sbin/ifconfig/tests/inet6.sh
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: ISC
+#
+# Copyright (c) 2025 Lexi Winter
+
+. $(atf_get_srcdir)/../../sys/common/vnet.subr
+
+# Bug 286910: adding 'netmask' or 'broadcast' to an IPv6 address crashed
+# ifconfig.
+
+atf_test_case "netmask" "cleanup"
+netmask_head()
+{
+ atf_set descr "Test invalid 'netmask' option"
+ atf_set require.user root
+}
+
+netmask_body()
+{
+ vnet_init
+
+ ep=$(vnet_mkepair)
+ vnet_mkjail ifcjail ${ep}a
+
+ # Add the address the wrong way
+ atf_check -s exit:1 \
+ -e match:"ifconfig: netmask: invalid option for inet6" \
+ jexec ifcjail ifconfig ${ep}a inet6 2001:db8:1::1 netmask 64
+
+ # Add the address the correct way
+ atf_check -s exit:0 \
+ jexec ifcjail ifconfig ${ep}a inet6 2001:db8:1::1/64
+ atf_check -s exit:0 -o match:"2001:db8:1::1 prefixlen 64" \
+ jexec ifcjail ifconfig ${ep}a
+
+ # Remove the address the wrong way
+ atf_check -s exit:1 \
+ -e match:"ifconfig: netmask: invalid option for inet6" \
+ jexec ifcjail ifconfig ${ep}a inet6 2001:db8:1::1 netmask 64 -alias
+}
+
+netmask_cleanup()
+{
+ vnet_cleanup
+}
+
+atf_test_case "broadcast" "cleanup"
+broadcast_head()
+{
+ atf_set descr "Test invalid 'broadcast' option"
+ atf_set require.user root
+}
+
+broadcast_body()
+{
+ vnet_init
+
+ ep=$(vnet_mkepair)
+ vnet_mkjail ifcjail ${ep}a
+
+ atf_check -s exit:1 \
+ -e match:"ifconfig: broadcast: invalid option for inet6" \
+ jexec ifcjail ifconfig ${ep}a \
+ inet6 2001:db8:1::1 broadcast 2001:db8:1::ffff
+
+ atf_check -s exit:0 \
+ jexec ifcjail ifconfig ${ep}a inet6 2001:db8:1::1/64
+
+ atf_check -s exit:1 \
+ -e match:"ifconfig: broadcast: invalid option for inet6" \
+ jexec ifcjail ifconfig ${ep}a \
+ inet6 2001:db8:1::1 broadcast 2001:db:1::ffff -alias
+}
+
+broadcast_cleanup()
+{
+ vnet_cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case netmask
+ atf_add_test_case broadcast
+}