dash -c 'echo ${}' should print "Bad subtitution" but instead
fails with "Syntax error: Missing '}'".  This is caused by us
reading an extra character beyond the right brace.  This patch
fixes it so that this construct only fails during expansion rather
than during parsing.

Fixes: 3df3edd13389 ("[PARSER] Report substition errors at...")
Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>

diff --git a/src/parser.c b/src/parser.c
index 6a8a4a4..efa8060 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1262,7 +1262,7 @@ varname:
                                STPUTC(c, out);
                                c = pgetc_eatbnl();
                        } while (is_digit(c));
-               } else {
+               } else if (c != '}') {
                        int cc = c;
 
                        c = pgetc_eatbnl();
@@ -1290,7 +1290,8 @@ varname:
                        }
 
                        USTPUTC(cc, out);
-               }
+               } else
+                       goto badsub;
 
                if (subtype == 0) {
                        int cc = c;
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to