bison uses cmd_free($$) as destructor, but base_cmd can
set it to NULL, e.g.
| ELEMENT set_spec set_block_expr
{
if (nft_cmd_collapse_elems(CMD_ADD, state->cmds, &$2, $3)) {
handle_free(&$2);
expr_free($3);
$$ = NULL; // cmd set to NULL
break;
}
$$ = cmd_alloc(CMD_ADD, CMD_OBJ_ELEMENTS, &$2, &@$, $3);
expr_free(NULL) is legal, cmd_free() causes crash. So just allow
this to avoid cluttering parser_bison.y with "if ($$)".
Also add the afl-generated bogon input to the test files.
Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Pablo Neira Ayuso <pablo@netfilter.org>
void cmd_free(struct cmd *cmd)
{
+ if (cmd == NULL)
+ return;
+
handle_free(&cmd->handle);
if (cmd->data != NULL) {
switch (cmd->obj) {
--- /dev/null
+nt rootepep test- {
+* : 1:3 }
+ element root tesip {
+* : 1:3 }
+ elent rootsel s1 {
+ typ� elements < { "Linux" }
+ }
+tatlet e t {
+ thataepep test- {
+* : 1:3 }
+ element root tesip {
+* : 1:3 }� table Cridgents < t {
+list set y p
+ type i , {
+ sel s1 {
+ typ� elements < { "Linux" }
+ }
+tatlet e t {
+ thatable Cridgents < t {
+lis