diff options
author | Mark Andrews <marka@isc.org> | 2013-05-15 10:49:54 +1000 |
---|---|---|
committer | Mark Andrews <marka@isc.org> | 2013-05-15 10:49:54 +1000 |
commit | dc9d7b08aa62743e7cbfb1795c324b3c1773ecd0 (patch) | |
tree | 5f15f5dc67d166c072f276867a0172071bcaff9f /common/parse.c | |
parent | 7133470475b841299f06487039be10003d020456 (diff) | |
download | isc-dhcp-dc9d7b08aa62743e7cbfb1795c324b3c1773ecd0.tar.gz |
- Silence benign static analysis warnings.
[ISC-Bugs #33428]
Diffstat (limited to 'common/parse.c')
-rw-r--r-- | common/parse.c | 255 |
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); |