summaryrefslogtreecommitdiff
path: root/common/parse.c
diff options
context:
space:
mode:
authorMark Andrews <marka@isc.org>2013-05-15 10:49:54 +1000
committerMark Andrews <marka@isc.org>2013-05-15 10:49:54 +1000
commitdc9d7b08aa62743e7cbfb1795c324b3c1773ecd0 (patch)
tree5f15f5dc67d166c072f276867a0172071bcaff9f /common/parse.c
parent7133470475b841299f06487039be10003d020456 (diff)
downloadisc-dhcp-dc9d7b08aa62743e7cbfb1795c324b3c1773ecd0.tar.gz
- Silence benign static analysis warnings.
[ISC-Bugs #33428]
Diffstat (limited to 'common/parse.c')
-rw-r--r--common/parse.c255
1 files changed, 125 insertions, 130 deletions
diff --git a/common/parse.c b/common/parse.c
index ac8e6613..ad31f8ab 100644
--- a/common/parse.c
+++ b/common/parse.c
@@ -3,7 +3,7 @@
Common parser code for dhcpd and dhclient. */
/*
- * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2013 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1995-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
@@ -110,7 +110,7 @@ void skip_to_rbrace (cfile, brace_count)
do {
token = peek_token (&val, (unsigned *)0, cfile);
if (token == RBRACE) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (brace_count) {
if (!--brace_count)
return;
@@ -119,13 +119,13 @@ void skip_to_rbrace (cfile, brace_count)
} else if (token == LBRACE) {
brace_count++;
} else if (token == SEMI && !brace_count) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
return;
} else if (token == EOL) {
/* EOL only happens when parsing /etc/resolv.conf,
and we treat it like a semicolon because the
resolv.conf file is line-oriented. */
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
return;
}
token = next_token (&val, (unsigned *)0, cfile);
@@ -206,7 +206,7 @@ char *parse_host_name (cfile)
token = peek_token (&val, (unsigned *)0, cfile);
if (!is_identifier (token) && token != NUMBER)
break;
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* Store this identifier... */
if (!(s = (char *)dmalloc (strlen (val) + 1, MDL)))
@@ -285,7 +285,7 @@ int parse_ip_addr_or_hostname (expr, cfile, uniform)
* we're dealing with.
*/
save_parse_state(cfile);
- (void) next_token(NULL, NULL, cfile);
+ skip_token(NULL, NULL, cfile);
if (next_token(NULL, NULL, cfile) == DOT &&
next_token(NULL, NULL, cfile) == NUMBER)
ipaddr = 1;
@@ -498,7 +498,7 @@ parse_ip_addr_with_subnet(cfile, match)
token = peek_token(&val, NULL, cfile);
if (token == SLASH) {
- next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
token = next_token(&val, NULL, cfile);
if (token != NUMBER) {
@@ -733,7 +733,7 @@ unsigned char *parse_numeric_aggregate (cfile, buf,
dfree(bufp, MDL);
return (unsigned char *)0;
}
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
}
token = next_token (&val, (unsigned *)0, cfile);
@@ -948,23 +948,23 @@ parse_date_core(cfile)
/* "never", "epoch" or day of week */
token = peek_token(&val, NULL, cfile);
if (token == NEVER) {
- token = next_token(&val, NULL, cfile); /* consume NEVER */
+ skip_token(&val, NULL, cfile); /* consume NEVER */
return(MAX_TIME);
}
/* This indicates 'local' time format. */
if (token == EPOCH) {
- token = next_token(&val, NULL, cfile); /* consume EPOCH */
+ skip_token(&val, NULL, cfile); /* consume EPOCH */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "Seconds since epoch expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume number */
+ skip_token(&val, NULL, cfile); /* consume number */
guess = atoi(val);
return((TIME)guess);
@@ -972,22 +972,22 @@ parse_date_core(cfile)
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric day of week expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume day of week */
+ skip_token(&val, NULL, cfile); /* consume day of week */
/* we are not using this for anything */
/* Year... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric year expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume year */
+ skip_token(&val, NULL, cfile); /* consume year */
/* Note: the following is not a Y2K bug - it's a Y1.9K bug. Until
somebody invents a time machine, I think we can safely disregard
@@ -1001,108 +1001,108 @@ parse_date_core(cfile)
token = peek_token(&val, NULL, cfile);
if (token != SLASH) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile,
"expected slash separating year from month.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume SLASH */
+ skip_token(&val, NULL, cfile); /* consume SLASH */
/* Month... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric month expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume month */
+ skip_token(&val, NULL, cfile); /* consume month */
mon = atoi(val) - 1;
/* Slash separating month from day... */
token = peek_token(&val, NULL, cfile);
if (token != SLASH) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile,
"expected slash separating month from day.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume SLASH */
+ skip_token(&val, NULL, cfile); /* consume SLASH */
/* Day of month... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric day of month expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume day of month */
+ skip_token(&val, NULL, cfile); /* consume day of month */
mday = atoi(val);
/* Hour... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric hour expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume hour */
+ skip_token(&val, NULL, cfile); /* consume hour */
hour = atoi(val);
/* Colon separating hour from minute... */
token = peek_token(&val, NULL, cfile);
if (token != COLON) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile,
"expected colon separating hour from minute.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume colon */
+ skip_token(&val, NULL, cfile); /* consume colon */
/* Minute... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric minute expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume minute */
+ skip_token(&val, NULL, cfile); /* consume minute */
min = atoi(val);
/* Colon separating minute from second... */
token = peek_token(&val, NULL, cfile);
if (token != COLON) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile,
"expected colon separating minute from second.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume colon */
+ skip_token(&val, NULL, cfile); /* consume colon */
/* Second... */
token = peek_token(&val, NULL, cfile);
if (token != NUMBER) {
if (token != SEMI)
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile, "numeric second expected.");
return((TIME)0);
}
- token = next_token(&val, NULL, cfile); /* consume second */
+ skip_token(&val, NULL, cfile); /* consume second */
sec = atoi(val);
tzoff = 0;
token = peek_token(&val, NULL, cfile);
if (token == NUMBER) {
- token = next_token(&val, NULL, cfile); /* consume tzoff */
+ skip_token(&val, NULL, cfile); /* consume tzoff */
tzoff = atoi(val);
} else if (token != SEMI) {
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
parse_warn(cfile,
"Time zone offset or semicolon expected.");
return((TIME)0);
@@ -1189,7 +1189,7 @@ parse_option_name (cfile, allocate, known, opt)
token = peek_token (&val, (unsigned *)0, cfile);
if (token == DOT) {
/* Go ahead and take the DOT token... */
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* The next token should be an identifier... */
token = next_token (&val, (unsigned *)0, cfile);
@@ -1308,7 +1308,7 @@ void parse_option_space_decl (cfile)
char *nu_name;
int tsize=1, lsize=1, hsize = 0;
- next_token (&val, (unsigned *)0, cfile); /* Discard the SPACE token,
+ skip_token(&val, (unsigned *)0, cfile); /* Discard the SPACE token,
which was checked by the
caller. */
token = next_token (&val, (unsigned *)0, cfile);
@@ -1670,7 +1670,7 @@ int parse_option_code_definition (cfile, option)
/* Consume optional compression indicator. */
token = peek_token(&val, NULL, cfile);
if (token == COMPRESSED) {
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
tokbuf[tokix++] = 'D';
type = 'c';
} else
@@ -2028,7 +2028,7 @@ int parse_cshl (data, cfile)
token = peek_token (&val, (unsigned *)0, cfile);
if (token != COLON)
break;
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
} while (1);
if (!buffer_allocate (&data -> buffer, tlen + ilen, MDL))
@@ -2105,8 +2105,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
token = peek_token (&val, (unsigned *)0, cfile);
switch (token) {
case DB_TIME_FORMAT:
- next_token(&val, NULL, cfile);
-
+ skip_token(&val, NULL, cfile);
token = next_token(&val, NULL, cfile);
if (token == DEFAULT) {
db_time_format = DEFAULT_TIME_FORMAT;
@@ -2131,11 +2130,11 @@ int parse_executable_statement (result, cfile, lose, case_context)
return 1;
case IF:
- next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
return parse_if_statement (result, cfile, lose);
case TOKEN_ADD:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != STRING) {
parse_warn (cfile, "expecting class name.");
@@ -2163,7 +2162,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case BREAK:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!parse_semi (cfile)) {
*lose = 1;
return 0;
@@ -2174,7 +2173,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case SEND:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
known = 0;
status = parse_option_name (cfile, 0, &known, &option);
if (status != ISC_R_SUCCESS || option == NULL) {
@@ -2188,7 +2187,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
case SUPERSEDE:
case OPTION:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
known = 0;
status = parse_option_name (cfile, 0, &known, &option);
if (status != ISC_R_SUCCESS || option == NULL) {
@@ -2209,7 +2208,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
case IGNORE:
flag = 2;
pad:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
cache = (struct option_cache *)0;
if (!parse_allow_deny (&cache, cfile, flag))
return 0;
@@ -2220,7 +2219,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case DEFAULT:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = peek_token (&val, (unsigned *)0, cfile);
if (token == COLON)
goto switch_default;
@@ -2236,7 +2235,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
return status;
case PREPEND:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
known = 0;
status = parse_option_name (cfile, 0, &known, &option);
if (status != ISC_R_SUCCESS || option == NULL) {
@@ -2249,7 +2248,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
return status;
case APPEND:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
known = 0;
status = parse_option_name (cfile, 0, &known, &option);
if (status != ISC_R_SUCCESS || option == NULL) {
@@ -2262,15 +2261,15 @@ int parse_executable_statement (result, cfile, lose, case_context)
return status;
case ON:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
return parse_on_statement (result, cfile, lose);
case SWITCH:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
return parse_switch_statement (result, cfile, lose);
case CASE:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (case_context == context_any) {
parse_warn (cfile,
"case statement in inappropriate scope.");
@@ -2282,7 +2281,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
cfile, lose, case_context);
switch_default:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (case_context == context_any) {
parse_warn (cfile, "switch default statement in %s",
"inappropriate scope.");
@@ -2298,7 +2297,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
case DEFINE:
case TOKEN_SET:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (token == DEFINE)
flag = 1;
else
@@ -2424,8 +2423,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case UNSET:
- token = next_token (&val, (unsigned *)0, cfile);
-
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != NAME && token != NUMBER_OR_NAME) {
parse_warn (cfile,
@@ -2450,8 +2448,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case EVAL:
- token = next_token (&val, (unsigned *)0, cfile);
-
+ skip_token(&val, (unsigned *)0, cfile);
if (!executable_statement_allocate (result, MDL))
log_fatal ("no memory for eval statement.");
(*result) -> op = eval_statement;
@@ -2476,7 +2473,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
case EXECUTE:
#ifdef ENABLE_EXECUTE
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
if (!executable_statement_allocate (result, MDL))
log_fatal ("no memory for execute statement.");
@@ -2546,7 +2543,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case RETURN:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!executable_statement_allocate (result, MDL))
log_fatal ("no memory for return statement.");
@@ -2572,7 +2569,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
break;
case LOG:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!executable_statement_allocate (result, MDL))
log_fatal ("no memory for log statement.");
@@ -2601,7 +2598,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
i = 0;
}
if (i) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != COMMA) {
parse_warn (cfile, "comma expected.");
@@ -2639,7 +2636,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
because it's appropriate for all DHCP agents with
parsers. */
case ZONE:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
zone = (struct dns_zone *)0;
if (!dns_zone_allocate (&zone, MDL))
log_fatal ("no memory for new zone.");
@@ -2679,7 +2676,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
/* Also not really a statement, but same idea as above. */
case KEY:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!parse_key (cfile)) {
*lose = 1;
return 0;
@@ -2693,8 +2690,7 @@ int parse_executable_statement (result, cfile, lose, case_context)
config_universe->name_hash,
val, 0, MDL);
if (option) {
- token = next_token (&val,
- (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
status = parse_option_statement
(result, cfile, 1, option,
supersede_option_statement);
@@ -2790,7 +2786,7 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
log_fatal ("can't allocate secondary.");
oc = zone -> secondary;
consemup:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
do {
struct expression *expr = (struct expression *)0;
if (!parse_ip_addr_or_hostname (&expr, cfile, 0)) {
@@ -2848,7 +2844,7 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
"option cache.");
oc = zone->secondary6;
consemup6:
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
do {
struct expression *expr = NULL;
if (parse_ip6_addr_expr(&expr, cfile) == 0) {
@@ -2882,10 +2878,10 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
break;
case KEY:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = peek_token (&val, (unsigned *)0, cfile);
if (token == STRING) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
key_name = (char *)0;
} else {
key_name = parse_host_name (cfile);
@@ -2943,7 +2939,7 @@ int parse_key (struct parse *cfile)
token = peek_token (&val, (unsigned *)0, cfile);
if (token == STRING) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
key -> name = dmalloc (strlen (val) + 1, MDL);
if (!key -> name)
log_fatal ("no memory for key name.");
@@ -3047,8 +3043,9 @@ int parse_key (struct parse *cfile)
/* Allow the BIND 8 syntax, which has a semicolon after each
closing brace. */
token = peek_token (&val, (unsigned *)0, cfile);
- if (token == SEMI)
- token = next_token (&val, (unsigned *)0, cfile);
+ if (token == SEMI) {
+ skip_token(&val, (unsigned *)0, cfile);
+ }
/* Remember the key. */
status = omapi_auth_key_enter (key);
@@ -3286,7 +3283,7 @@ int parse_if_statement (result, cfile, lose)
token = peek_token (&val, (unsigned *)0, cfile);
if (token == LPAREN) {
parenp = 1;
- next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
} else
parenp = 0;
@@ -3341,10 +3338,10 @@ int parse_if_statement (result, cfile, lose)
}
token = peek_token (&val, (unsigned *)0, cfile);
if (token == ELSE) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = peek_token (&val, (unsigned *)0, cfile);
if (token == IF) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!parse_if_statement (&(*result) -> data.ie.fc,
cfile, lose)) {
if (!*lose)
@@ -3361,7 +3358,7 @@ int parse_if_statement (result, cfile, lose)
executable_statement_dereference (result, MDL);
return 0;
} else {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!(parse_executable_statements
(&(*result) -> data.ie.fc,
cfile, lose, context_any))) {
@@ -3378,7 +3375,7 @@ int parse_if_statement (result, cfile, lose)
}
}
} else if (token == ELSIF) {
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!parse_if_statement (&(*result) -> data.ie.fc,
cfile, lose)) {
if (!*lose)
@@ -3580,7 +3577,7 @@ int parse_non_binary (expr, cfile, lose, context)
/* Check for unary operators... */
switch (token) {
case CHECK:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != STRING) {
parse_warn (cfile, "string expected.");
@@ -3603,7 +3600,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case TOKEN_NOT:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
#if defined(NSUPDATE_OLD)
if (context == context_dns) {
token = peek_token (&val, (unsigned *)0, cfile);
@@ -3633,7 +3630,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case LPAREN:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!parse_expression (expr, cfile, lose, context,
(struct expression **)0, expr_none)) {
if (!*lose) {
@@ -3657,7 +3654,7 @@ int parse_non_binary (expr, cfile, lose, context)
if (context == context_dns)
goto ns_exists;
#endif
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_exists;
@@ -3674,21 +3671,21 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case STATIC:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_static;
break;
case KNOWN:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_known;
break;
case SUBSTRING:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_substring;
@@ -3757,7 +3754,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case SUFFIX:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_suffix;
@@ -3784,7 +3781,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case LCASE:
- token = next_token(&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate(expr, MDL))
log_fatal ("can't allocate expression");
(*expr)->op = expr_lcase;
@@ -3802,7 +3799,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case UCASE:
- token = next_token(&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate(expr, MDL))
log_fatal ("can't allocate expression");
(*expr)->op = expr_ucase;
@@ -3821,7 +3818,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case CONCAT:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_concat;
@@ -3863,7 +3860,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case BINARY_TO_ASCII:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_binary_to_ascii;
@@ -3906,7 +3903,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case REVERSE:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_reverse;
@@ -3935,7 +3932,7 @@ int parse_non_binary (expr, cfile, lose, context)
case PICK:
/* pick (a, b, c) actually produces an internal representation
that looks like pick (a, pick (b, pick (c, nil))). */
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!(expression_allocate (expr, MDL)))
log_fatal ("can't allocate expression");
@@ -3981,7 +3978,7 @@ int parse_non_binary (expr, cfile, lose, context)
parse_warn (cfile,
"Please rebuild dhcpd with --with-nsupdate.");
#endif
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (token == DNS_UPDATE)
opcode = expr_ns_add;
else
@@ -4088,7 +4085,7 @@ int parse_non_binary (expr, cfile, lose, context)
parse_warn (cfile,
"Please rebuild dhcpd with --with-nsupdate.");
#endif
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
@@ -4256,7 +4253,7 @@ int parse_non_binary (expr, cfile, lose, context)
(*expr) -> op = (token == OPTION
? expr_option
: expr_config_option);
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
known = 0;
/* Pass reference directly to expression structure. */
status = parse_option_name(cfile, 0, &known,
@@ -4270,56 +4267,56 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case HARDWARE:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_hardware;
break;
case LEASED_ADDRESS:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_leased_address;
break;
case CLIENT_STATE:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_client_state;
break;
case FILENAME:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_filename;
break;
case SERVER_NAME:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_sname;
break;
case LEASE_TIME:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_lease_time;
break;
case TOKEN_NULL:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_null;
break;
case HOST_DECL_NAME:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_host_decl_name;
@@ -4327,8 +4324,7 @@ int parse_non_binary (expr, cfile, lose, context)
#if defined(NSUPDATE_OLD)
case UPDATED_DNS_RR:
- token = next_token (&val, (unsigned *)0, cfile);
-
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != LPAREN)
goto nolparen;
@@ -4364,7 +4360,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
#endif /* NSUPDATE_OLD */
case PACKET:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_packet;
@@ -4391,14 +4387,14 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case STRING:
- token = next_token (&val, &len, cfile);
+ skip_token(&val, &len, cfile);
if (!make_const_data (expr, (const unsigned char *)val,
len, 1, 1, MDL))
log_fatal ("can't make constant string expression.");
break;
case EXTRACT_INT:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != LPAREN) {
parse_warn (cfile, "left parenthesis expected.");
@@ -4468,7 +4464,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case ENCODE_INT:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != LPAREN) {
parse_warn (cfile, "left parenthesis expected.");
@@ -4539,7 +4535,7 @@ int parse_non_binary (expr, cfile, lose, context)
number, by itself. */
if (context == context_numeric ||
context == context_data_or_numeric) {
- next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_const_int;
@@ -4562,7 +4558,7 @@ int parse_non_binary (expr, cfile, lose, context)
known = FORMERR;
goto ns_const;
ns_const:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_const_int;
@@ -4638,7 +4634,7 @@ int parse_non_binary (expr, cfile, lose, context)
goto ns_const;
case DEFINED:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = next_token (&val, (unsigned *)0, cfile);
if (token != LPAREN)
goto nolparen;
@@ -4665,7 +4661,7 @@ int parse_non_binary (expr, cfile, lose, context)
/* This parses 'gethostname()'. */
case GETHOSTNAME:
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
if (!expression_allocate(expr, MDL))
log_fatal("can't allocate expression");
(*expr)->op = expr_gethostname;
@@ -4680,8 +4676,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
case GETHOSTBYNAME:
- token = next_token(&val, NULL, cfile);
-
+ skip_token(&val, NULL, cfile);
token = next_token(NULL, NULL, cfile);
if (token != LPAREN)
goto nolparen;
@@ -4709,7 +4704,7 @@ int parse_non_binary (expr, cfile, lose, context)
if (token != NAME && token != NUMBER_OR_NAME)
return 0;
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* Save the name of the variable being referenced. */
cptr = dmalloc (strlen (val) + 1, MDL);
@@ -4727,7 +4722,7 @@ int parse_non_binary (expr, cfile, lose, context)
break;
}
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
if (!expression_allocate (expr, MDL))
log_fatal ("can't allocate expression");
(*expr) -> op = expr_funcall;
@@ -4816,7 +4811,7 @@ int parse_expression (expr, cfile, lose, context, plhs, binop)
token = peek_token (&val, (unsigned *)0, cfile);
switch (token) {
case BANG:
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
token = peek_token (&val, (unsigned *)0, cfile);
if (token != EQUAL) {
parse_warn (cfile, "! in boolean context without =");
@@ -4837,7 +4832,7 @@ int parse_expression (expr, cfile, lose, context, plhs, binop)
case TILDE:
#ifdef HAVE_REGEX_H
- token = next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
token = peek_token(&val, NULL, cfile);
if (token == TILDE)
@@ -4929,7 +4924,7 @@ int parse_expression (expr, cfile, lose, context, plhs, binop)
lhs = rhs;
rhs = (struct expression *)0;
binop = next_op;
- next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
goto new_rhs;
}
@@ -4944,7 +4939,7 @@ int parse_expression (expr, cfile, lose, context, plhs, binop)
/* Eat the subexpression operator token, which we pass to
* parse_expression...we only peek()'d earlier.
*/
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* Continue parsing of the right hand side with that token. */
tmp = rhs;
@@ -5059,7 +5054,7 @@ int parse_expression (expr, cfile, lose, context, plhs, binop)
}
/* Eat the operator token - we now know it was a binary operator... */
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* Now combine the LHS and the RHS using binop. */
tmp = (struct expression *)0;
@@ -5170,8 +5165,7 @@ struct option *option;
token = peek_token (&val, (unsigned *)0, cfile);
/* Comma means: continue with next element in array */
if (token == COMMA) {
- token = next_token (&val,
- (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
continue;
}
/* no comma: end of array.
@@ -5217,10 +5211,10 @@ int parse_option_statement (result, cfile, lookups, option, op)
* we are parsing a zero-length option, so don't
* eat the semicolon token in that case.
*/
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
} else if (token == EQUAL) {
/* Eat the equals sign. */
- token = next_token (&val, (unsigned *)0, cfile);
+ skip_token(&val, (unsigned *)0, cfile);
/* Parse a data expression and use its value for the data. */
if (!parse_data_expression (&expr, cfile, &lose)) {
@@ -5376,6 +5370,7 @@ int parse_option_token (rv, cfile, fmt, expr, uniform, lookups)
if (freeval == ISC_TRUE) {
dfree((char *)val, MDL);
freeval = ISC_FALSE;
+ POST(freeval);
}
break;
@@ -5864,7 +5859,7 @@ int parse_X (cfile, buf, max)
} while (token == COLON);
val = (char *)buf;
} else if (token == STRING) {
- token = next_token (&val, &len, cfile);
+ skip_token(&val, &len, cfile);
if (len + 1 > max) {
parse_warn (cfile, "string constant too long.");
skip_to_semi (cfile);
@@ -5952,7 +5947,7 @@ parse_domain_list(struct parse *cfile, int compress)
do {
/* Consume the COMMA token if peeked. */
if (token == COMMA)
- next_token(&val, NULL, cfile);
+ skip_token(&val, NULL, cfile);
/* Get next (or first) value. */
token = next_token(&val, &len, cfile);