aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2026-06-03 01:27:54 +0000
committerEd Maste <emaste@FreeBSD.org>2026-06-03 15:33:05 +0000
commit521afce6a859c1d7ac9674e8f21ff45418becaf5 (patch)
tree55caf89c4139941730bc37caffd8b3548daa8117
parent4908bea5b7f5de70032e201e718958ef40bc3b03 (diff)
xinstall: Do not allow -l and -s together
Cannot strip the target if creating a link. Reviewed by: des Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D57398
-rwxr-xr-xusr.bin/xinstall/tests/install_test.sh3
-rw-r--r--usr.bin/xinstall/xinstall.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/usr.bin/xinstall/tests/install_test.sh b/usr.bin/xinstall/tests/install_test.sh
index 6b091f26b377..377920200490 100755
--- a/usr.bin/xinstall/tests/install_test.sh
+++ b/usr.bin/xinstall/tests/install_test.sh
@@ -27,8 +27,11 @@
atf_test_case incompatible_opts
incompatible_opts_body() {
+ printf 'test\n123\r456\r\n789\0z' >testf
atf_check -s not-exit:0 -e match:"specified together" \
install -s -d dir1
+ atf_check -s not-exit:0 -e match:"specified together" \
+ install -s -l s testf copyf
}
atf_test_case copy_to_empty
diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c
index d389bdbe3737..facdcb737c41 100644
--- a/usr.bin/xinstall/xinstall.c
+++ b/usr.bin/xinstall/xinstall.c
@@ -293,6 +293,12 @@ main(int argc, char *argv[])
usage();
}
+ /* Cannot strip if creating a link. */
+ if (dostrip && dolink) {
+ warnx("-l and -s may not be specified together");
+ usage();
+ }
+
/*
* Default permissions based on whether we're a directory or not, since
* an +X may mean that we need to set the execute bit.