diff options
author | Demi Obenour <demiobenour@gmail.com> | 2016-12-01 18:13:51 -0500 |
---|---|---|
committer | Will Estes <westes575@gmail.com> | 2016-12-29 14:18:15 -0500 |
commit | 8d4aa5ccaf1770194aee27505ccd460038c2d2dc (patch) | |
tree | adfe13295a5468051e58908afabd7af2c2795934 /src | |
parent | 7975c43384d766ca12cb3f292754dbdc34168886 (diff) |
scanner: Disallow, overquote '[' and ']' in prefix
Diffstat (limited to 'src')
-rw-r--r-- | src/buf.c | 2 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/parse.y | 4 |
3 files changed, 6 insertions, 2 deletions
@@ -166,7 +166,7 @@ struct Buf *buf_strdefine (struct Buf *buf, const char *str, const char *def) */ struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val) { - const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n"; + const char * fmt = "m4_define( [[%s]], [[[[%s]]]])m4_dnl\n"; char * str; size_t strsz; @@ -445,6 +445,8 @@ void check_options (void) if ( bison_bridge_lloc) buf_m4_define (&m4defs_buf, "<M4_YY_BISON_LLOC>", NULL); + if (strchr(prefix, '[') || strchr(prefix, ']')) + flexerror(_("Prefix cannot include '[' or ']'")); buf_m4_define(&m4defs_buf, "M4_YY_PREFIX", prefix); if (did_outfilename) diff --git a/src/parse.y b/src/parse.y index 4de4151..8aed868 100644 --- a/src/parse.y +++ b/src/parse.y @@ -199,7 +199,9 @@ option : TOK_OUTFILE '=' NAME | TOK_EXTRA_TYPE '=' NAME { extra_type = xstrdup(nmstr); } | TOK_PREFIX '=' NAME - { prefix = xstrdup(nmstr); } + { prefix = xstrdup(nmstr); + if (strchr(prefix, '[') || strchr(prefix, ']')) + flexerror(_("Prefix must not contain [ or ]")); } | TOK_YYCLASS '=' NAME { yyclass = xstrdup(nmstr); } | TOK_HEADER_FILE '=' NAME |