lib: Fix use after free in lexer

Fix occasional bug where deleting flex's input
buffer happens earlier than flex expects

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2016-08-09 19:30:40 +00:00
parent 4427e9b3ee
commit 07079d78bc

View File

@ -152,7 +152,6 @@ start:
{ {
// tack on the command element // tack on the command element
terminate_graph (startnode, currnode, element); terminate_graph (startnode, currnode, element);
cleanup();
} }
| sentence_root cmd_token_seq '.' placeholder_token | sentence_root cmd_token_seq '.' placeholder_token
{ {
@ -165,7 +164,6 @@ start:
// tack on the command element // tack on the command element
terminate_graph (startnode, currnode, element); terminate_graph (startnode, currnode, element);
cleanup();
} }
sentence_root: WORD sentence_root: WORD
@ -394,7 +392,10 @@ parse_command_format(struct graph_node *start, struct cmd_element *cmd)
yydebug = 0; yydebug = 0;
// parse command into DFA // parse command into DFA
yyparse(cmd, start); yyparse (cmd, start);
/* cleanup */
cleanup ();
return start; return start;
} }
@ -416,7 +417,7 @@ cleanup()
free (docstr_start); free (docstr_start);
/* cleanup lexer */ /* cleanup lexer */
cleanup_lexer(); cleanup_lexer ();
/* clear state pointers */ /* clear state pointers */
seqhead = NULL; seqhead = NULL;