[git commit branch/1_28_stable] hush: fix a signedness bug

Denys Vlasenko vda.linux at googlemail.com
Sun Apr 1 11:04:11 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=e04a38c0c91c17ce27fb11d83f6767614b7d6b59
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/1_28_stable

Testcase:

set -- a ""; space=" "; printf "<%s>\n" "$@"$space

Before:
<a >
After:
<a>
<>

It usually does not bite since bbox forces -funsigned-char build.

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shell/hush.c b/shell/hush.c
index b76b8fda4..e69903d10 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -6015,7 +6015,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) {


More information about the busybox-cvs mailing list