summaryrefslogtreecommitdiffstats
path: root/bin/sh/parser.c
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2009-10-01 21:40:08 +0000
committerjilles <jilles@FreeBSD.org>2009-10-01 21:40:08 +0000
commita4d520ccb00f763ccd4dd0b5ed115e9fcb02cfb5 (patch)
treebcd4e5bd8cb7c2b6f923a66d742dde64f339d7c5 /bin/sh/parser.c
parent59192f4ab17e940d81657e414a387da3db068f63 (diff)
downloadFreeBSD-src-a4d520ccb00f763ccd4dd0b5ed115e9fcb02cfb5.zip
FreeBSD-src-a4d520ccb00f763ccd4dd0b5ed115e9fcb02cfb5.tar.gz
sh: Disallow mismatched quotes in backticks (`...`).
Due to the amount of code removed by this, it seems that allowing unmatched quotes was a deliberate imitation of System V sh and real ksh. Most other shells do not allow unmatched quotes (e.g. bash, zsh, pdksh, NetBSD /bin/sh, dash). PR: bin/137657
Diffstat (limited to 'bin/sh/parser.c')
-rw-r--r--bin/sh/parser.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/bin/sh/parser.c b/bin/sh/parser.c
index 54a80a7..9e86162 100644
--- a/bin/sh/parser.c
+++ b/bin/sh/parser.c
@@ -82,7 +82,6 @@ struct heredoc {
STATIC struct heredoc *heredoclist; /* list of here documents to read */
-STATIC int parsebackquote; /* nonzero if we are inside backquotes */
STATIC int doprompt; /* if set, prompt the user */
STATIC int needprompt; /* true if interactive and at start of line */
STATIC int lasttoken; /* last token read */
@@ -1043,7 +1042,7 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
endword:
if (syntax == ARISYNTAX)
synerror("Missing '))'");
- if (syntax != BASESYNTAX && ! parsebackquote && eofmark == NULL)
+ if (syntax != BASESYNTAX && eofmark == NULL)
synerror("Unterminated quoted string");
if (varnest != 0) {
startlinno = plinno;
@@ -1303,7 +1302,6 @@ parsesub: {
parsebackq: {
struct nodelist **nlpp;
- int savepbq;
union node *n;
char *volatile str;
struct jmploc jmploc;
@@ -1311,11 +1309,9 @@ parsebackq: {
int savelen;
int saveprompt;
- savepbq = parsebackquote;
if (setjmp(jmploc.loc)) {
if (str)
ckfree(str);
- parsebackquote = 0;
handler = savehandler;
longjmp(handler->loc, 1);
}
@@ -1397,7 +1393,6 @@ done:
nlpp = &(*nlpp)->next;
*nlpp = (struct nodelist *)stalloc(sizeof (struct nodelist));
(*nlpp)->next = NULL;
- parsebackquote = oldstyle;
if (oldstyle) {
saveprompt = doprompt;
@@ -1433,7 +1428,6 @@ done:
str = NULL;
INTON;
}
- parsebackquote = savepbq;
handler = savehandler;
if (arinest || dblquote)
USTPUTC(CTLBACKQ | CTLQUOTE, out);
OpenPOWER on IntegriCloud