diff options
author | Denys Vlasenko | 2017-10-22 15:55:48 +0200 |
---|---|---|
committer | Denys Vlasenko | 2017-10-22 15:55:48 +0200 |
commit | 25f3b737dc04bb84fb593ace33a5c360163bd4e4 (patch) | |
tree | 07fdb99bc3e583a752bd033d7506f3e3d4d64629 /shell/hush.c | |
parent | 045327a418d1cf0a99405ca0b70ed61b5c1a1869 (diff) | |
download | busybox-25f3b737dc04bb84fb593ace33a5c360163bd4e4.zip busybox-25f3b737dc04bb84fb593ace33a5c360163bd4e4.tar.gz |
hush: fix comment parsing in `cmd`, closes 10421
function old new delta
parse_stream 2692 2690 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush.c')
-rw-r--r-- | shell/hush.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/shell/hush.c b/shell/hush.c index d27550b..708555a 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -5140,14 +5140,23 @@ static struct pipe *parse_stream(char **pstring, case '#': if (dest.length == 0 && !dest.has_quoted_part) { /* skip "#comment" */ + /* note: we do not add it to &ctx.as_string */ +/* TODO: in bash: + * comment inside $() goes to the next \n, even inside quoted string (!): + * cmd "$(cmd2 #comment)" - syntax error + * cmd "`cmd2 #comment`" - ok + * We accept both (comment ends where command subst ends, in both cases). + */ while (1) { ch = i_peek(input); - if (ch == EOF || ch == '\n') + if (ch == '\n') { + nommu_addchr(&ctx.as_string, '\n'); + break; + } + ch = i_getch(input); + if (ch == EOF) break; - i_getch(input); - /* note: we do not add it to &ctx.as_string */ } - nommu_addchr(&ctx.as_string, '\n'); continue; /* back to top of while (1) */ } break; |