From: Denys Vlasenko Date: Thu, 8 Feb 2018 18:39:42 +0000 (+0100) Subject: hush: probably fixing a bug in last LINENO fix X-Git-Tag: 1_29_0~252 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f786901c4bc2e724221e5c07208c3cd7913cb98c;p=oweals%2Fbusybox.git hush: probably fixing a bug in last LINENO fix I don't have an example of mishandled script, but the logic looked wrong: it could sometimes treat newlines as if they are spaces. function old new delta parse_stream 2788 2787 -1 Signed-off-by: Denys Vlasenko --- diff --git a/shell/hush.c b/shell/hush.c index f2ffcf54d..8f1017e3c 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -5019,18 +5019,13 @@ static struct pipe *parse_stream(char **pstring, * i.e., at the previous line. * We need to skip all whitespace before newlines. */ - if (ch != '\n') { - /* It was whitespace, but not a newline. - * Eat all whitespace. - */ - for (;;) { - next = i_peek(input); - if (next != ' ' && next != '\t' && next != '\n') - break; /* next char is not ws */ - ch = i_getch(input); - } - /* ch == last eaten whitespace char */ + while (ch != '\n') { + next = i_peek(input); + if (next != ' ' && next != '\t' && next != '\n') + break; /* next char is not ws */ + ch = i_getch(input); } + /* ch == last eaten whitespace char */ #endif if (done_word(&dest, &ctx)) { goto parse_error;