git: 521afce6a859 - main - xinstall: Do not allow -l and -s together

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Wed, 03 Jun 2026 15:33:17 UTC
The branch main has been updated by emaste:

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

commit 521afce6a859c1d7ac9674e8f21ff45418becaf5
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-06-03 01:27:54 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-06-03 15:33:05 +0000

    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
---
 usr.bin/xinstall/tests/install_test.sh | 3 +++
 usr.bin/xinstall/xinstall.c            | 6 ++++++
 2 files changed, 9 insertions(+)

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.