From 6ffaa00338a9dc5f9e798c30aa9f96e51ab2ef36 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 31 Mar 2018 00:46:07 +0200 Subject: hush: fix a signedness bug Testcase: set -- a ""; space=" "; printf "<%s>\n" "$@"$space Before: After: <> It usually does not bite since bbox forces -funsigned-char build. Signed-off-by: Denys Vlasenko --- shell/hush.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'shell/hush.c') diff --git a/shell/hush.c b/shell/hush.c index e6dd1bc3d..01d8f5935 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -6126,7 +6126,7 @@ static NOINLINE int expand_vars_to_list(o_string *output, int n, char *arg) } else /* If EXP_FLAG_SINGLEWORD, we handle assignment 'a=....$@.....' * and in this case should treat it like '$*' - see 'else...' below */ - if (first_ch == ('@'|0x80) /* quoted $@ */ + if (first_ch == (char)('@'|0x80) /* quoted $@ */ && !(output->o_expflags & EXP_FLAG_SINGLEWORD) /* not v="$@" case */ ) { while (1) { -- cgit v1.2.3