diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-10-22 15:55:48 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-10-22 15:55:48 +0200 |
commit | 25f3b737dc04bb84fb593ace33a5c360163bd4e4 (patch) | |
tree | 07fdb99bc3e583a752bd033d7506f3e3d4d64629 /shell/hush.c | |
parent | 045327a418d1cf0a99405ca0b70ed61b5c1a1869 (diff) | |
download | busybox-w32-25f3b737dc04bb84fb593ace33a5c360163bd4e4.tar.gz busybox-w32-25f3b737dc04bb84fb593ace33a5c360163bd4e4.tar.bz2 busybox-w32-25f3b737dc04bb84fb593ace33a5c360163bd4e4.zip |
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 d27550ba0..708555ac4 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -5140,14 +5140,23 @@ static struct pipe *parse_stream(char **pstring, | |||
5140 | case '#': | 5140 | case '#': |
5141 | if (dest.length == 0 && !dest.has_quoted_part) { | 5141 | if (dest.length == 0 && !dest.has_quoted_part) { |
5142 | /* skip "#comment" */ | 5142 | /* skip "#comment" */ |
5143 | /* note: we do not add it to &ctx.as_string */ | ||
5144 | /* TODO: in bash: | ||
5145 | * comment inside $() goes to the next \n, even inside quoted string (!): | ||
5146 | * cmd "$(cmd2 #comment)" - syntax error | ||
5147 | * cmd "`cmd2 #comment`" - ok | ||
5148 | * We accept both (comment ends where command subst ends, in both cases). | ||
5149 | */ | ||
5143 | while (1) { | 5150 | while (1) { |
5144 | ch = i_peek(input); | 5151 | ch = i_peek(input); |
5145 | if (ch == EOF || ch == '\n') | 5152 | if (ch == '\n') { |
5153 | nommu_addchr(&ctx.as_string, '\n'); | ||
5154 | break; | ||
5155 | } | ||
5156 | ch = i_getch(input); | ||
5157 | if (ch == EOF) | ||
5146 | break; | 5158 | break; |
5147 | i_getch(input); | ||
5148 | /* note: we do not add it to &ctx.as_string */ | ||
5149 | } | 5159 | } |
5150 | nommu_addchr(&ctx.as_string, '\n'); | ||
5151 | continue; /* back to top of while (1) */ | 5160 | continue; /* back to top of while (1) */ |
5152 | } | 5161 | } |
5153 | break; | 5162 | break; |