From 24aa93d5382f2365c35d6e804b748e0a1febf2f6 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Mon, 23 Sep 2024 12:44:28 +0100 Subject: [PATCH] ash: reject unknown long options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 64f70cc755 (Add --login support) added code in options() to handle the bash-compatible '--login' option. In doing so it committed BusyBox ash to silently accepting all other long options. Restore compatibility with other ash variants by rejecting unknown long options. function old new delta options 589 624 +35 Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko Signed-off-by: Sören Tempel --- shell/ash.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/ash.c b/shell/ash.c index bbd730770..8e029765d 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11502,11 +11502,12 @@ options(int *login_sh) if (val && (c == '-')) { /* long options */ if (strcmp(p, "login") == 0) { *login_sh = 1; + break; } /* TODO: --noprofile: e.g. if I want to run emergency shell from sulogin, * I want minimal/no shell init scripts - but it insists on running it as "-ash"... */ - break; + ash_msg_and_raise_error("bad option '%s'", p - 2); } } if (c == 'o') {