summaryrefslogtreecommitdiff
authorDenys Vlasenko <vda.linux@googlemail.com>2017-01-03 10:47:50 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2017-01-10 15:55:51 (GMT)
commit9c806db4b744999213ddba755fff847d4525df9f (patch)
tree05e3a820dc21d637d82d3235eadc21ec8f34f3a9
parent568cabf98a11e2e594243a309a9ffd7729a2b213 (diff)
downloadbusybox-9c806db4b744999213ddba755fff847d4525df9f.zip
busybox-9c806db4b744999213ddba755fff847d4525df9f.tar.gz
busybox-9c806db4b744999213ddba755fff847d4525df9f.tar.bz2
hush: correct exitcode for unterminated ')' - exitcode2.tests testcase
function old new delta parse_stream 2595 2609 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat
-rw-r--r--shell/hush.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/shell/hush.c b/shell/hush.c
index fecc892..a56d3b2 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -1137,6 +1137,9 @@ static void syntax_error_unexpected_ch(unsigned lineno UNUSED_PARAM, int ch)
char msg[2];
msg[0] = ch;
msg[1] = '\0';
+#if HUSH_DEBUG >= 2
+ bb_error_msg("hush.c:%u", lineno);
+#endif
bb_error_msg("syntax error: unexpected %s", ch == EOF ? "EOF" : msg);
}
@@ -4997,7 +5000,8 @@ static struct pipe *parse_stream(char **pstring,
* if we see {, we call parse_group(..., end_trigger='}')
* and it will match } earlier (not here). */
syntax_error_unexpected_ch(ch);
- goto parse_error;
+ G.last_exitcode = 2;
+ goto parse_error1;
default:
if (HUSH_DEBUG)
bb_error_msg_and_die("BUG: unexpected %c\n", ch);
@@ -5005,6 +5009,8 @@ static struct pipe *parse_stream(char **pstring,
} /* while (1) */
parse_error:
+ G.last_exitcode = 1;
+ parse_error1:
{
struct parse_context *pctx;
IF_HAS_KEYWORDS(struct parse_context *p2;)
@@ -5038,7 +5044,6 @@ static struct pipe *parse_stream(char **pstring,
} while (HAS_KEYWORDS && pctx);
o_free(&dest);
- G.last_exitcode = 1;
#if !BB_MMU
if (pstring)
*pstring = NULL;