From: Ted Lemon Date: Mon, 19 Jul 1999 15:34:33 +0000 (+0000) Subject: - Don't try to deallocate data associated with a partially-parsed statement X-Git-Tag: V3-BETA-1-PATCH-2~5^2~180 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba6cb47aa0246ebb340b7535585c4da4a49dd20d;p=thirdparty%2Fdhcp.git - Don't try to deallocate data associated with a partially-parsed statement if they haven't yet been allocated. --- diff --git a/common/execute.c b/common/execute.c index 65be02985..64cbf2723 100644 --- a/common/execute.c +++ b/common/execute.c @@ -22,7 +22,7 @@ #ifndef lint 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 */ #include "dhcpd.h" @@ -263,33 +263,40 @@ int executable_statement_dereference (ptr, name) switch ((*ptr) -> op) { case statements_statement: - executable_statement_dereference - (&(*ptr) -> data.statements, name); + if ((*ptr) -> data.statements) + executable_statement_dereference + (&(*ptr) -> data.statements, name); break; case on_statement: - executable_statement_dereference - (&(*ptr) -> data.on.statements, name); + if ((*ptr) -> data.on.statements) + executable_statement_dereference + (&(*ptr) -> data.on.statements, name); break; case if_statement: - expression_dereference (&(*ptr) -> data.ie.expr, name); - executable_statement_dereference - (&(*ptr) -> data.ie.true, name); + if ((*ptr) -> data.ie.expr) + expression_dereference (&(*ptr) -> data.ie.expr, name); + if ((*ptr) -> data.ie.true) + executable_statement_dereference + (&(*ptr) -> data.ie.true, name); if ((*ptr) -> data.ie.false) executable_statement_dereference (&(*ptr) -> data.ie.false, name); break; case eval_statement: - expression_dereference (&(*ptr) -> data.eval, name); + if ((*ptr) -> data.eval) + expression_dereference (&(*ptr) -> data.eval, name); break; case supersede_option_statement: case default_option_statement: case append_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; default: