mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-09-01 14:55:30 +00:00
- Don't try to deallocate data associated with a partially-parsed statement
if they haven't yet been allocated.
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: execute.c,v 1.14 1999/07/19 13:08:28 mellon Exp $ Copyright (c) 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
"$Id: execute.c,v 1.15 1999/07/19 15:34:33 mellon Exp $ Copyright (c) 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@@ -263,17 +263,21 @@ int executable_statement_dereference (ptr, name)
|
|||||||
|
|
||||||
switch ((*ptr) -> op) {
|
switch ((*ptr) -> op) {
|
||||||
case statements_statement:
|
case statements_statement:
|
||||||
|
if ((*ptr) -> data.statements)
|
||||||
executable_statement_dereference
|
executable_statement_dereference
|
||||||
(&(*ptr) -> data.statements, name);
|
(&(*ptr) -> data.statements, name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case on_statement:
|
case on_statement:
|
||||||
|
if ((*ptr) -> data.on.statements)
|
||||||
executable_statement_dereference
|
executable_statement_dereference
|
||||||
(&(*ptr) -> data.on.statements, name);
|
(&(*ptr) -> data.on.statements, name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case if_statement:
|
case if_statement:
|
||||||
|
if ((*ptr) -> data.ie.expr)
|
||||||
expression_dereference (&(*ptr) -> data.ie.expr, name);
|
expression_dereference (&(*ptr) -> data.ie.expr, name);
|
||||||
|
if ((*ptr) -> data.ie.true)
|
||||||
executable_statement_dereference
|
executable_statement_dereference
|
||||||
(&(*ptr) -> data.ie.true, name);
|
(&(*ptr) -> data.ie.true, name);
|
||||||
if ((*ptr) -> data.ie.false)
|
if ((*ptr) -> data.ie.false)
|
||||||
@@ -282,6 +286,7 @@ int executable_statement_dereference (ptr, name)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eval_statement:
|
case eval_statement:
|
||||||
|
if ((*ptr) -> data.eval)
|
||||||
expression_dereference (&(*ptr) -> data.eval, name);
|
expression_dereference (&(*ptr) -> data.eval, name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -289,7 +294,9 @@ int executable_statement_dereference (ptr, name)
|
|||||||
case default_option_statement:
|
case default_option_statement:
|
||||||
case append_option_statement:
|
case append_option_statement:
|
||||||
case prepend_option_statement:
|
case prepend_option_statement:
|
||||||
option_cache_dereference (&(*ptr) -> data.option, name);
|
if ((*ptr) -> data.option)
|
||||||
|
option_cache_dereference (&(*ptr) -> data.option,
|
||||||
|
name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user