diff options
author | Thomas Markwalder <tmark@isc.org> | 2019-11-22 13:39:45 -0500 |
---|---|---|
committer | Thomas Markwalder <tmark@isc.org> | 2019-11-22 13:39:45 -0500 |
commit | 0cd94b5ef4a078097fc2bd1dc72f5e80c2cf1844 (patch) | |
tree | e4dfe9a92d676a49b18ab547d781fb3fb10c8e6a /server/confpars.c | |
parent | 97c155273c0df0c8518f226e2b5e338e3ad63e87 (diff) | |
download | isc-dhcp-0cd94b5ef4a078097fc2bd1dc72f5e80c2cf1844.tar.gz |
[#64,!35] Restored work
Restored cummulative work.
Diffstat (limited to 'server/confpars.c')
-rw-r--r-- | server/confpars.c | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/server/confpars.c b/server/confpars.c index 7ad28d55..4f0b58ee 100644 --- a/server/confpars.c +++ b/server/confpars.c @@ -775,8 +775,11 @@ int parse_statement (cfile, group, type, host_decl, declaration) et = (struct executable_statement *)0; if (!parse_option_statement (&et, cfile, 1, option, - supersede_option_statement)) + supersede_option_statement)) { + option_dereference(&option, MDL); return declaration; + } + option_dereference(&option, MDL); goto insert_statement; } else @@ -2048,12 +2051,15 @@ void parse_host_declaration (cfile, group) unsigned len; skip_token(&val, (unsigned *)0, cfile); - data_string_forget (&host -> client_identifier, MDL); - if (host->client_identifier.len != 0) { - parse_warn(cfile, "Host %s already has a " - "client identifier.", - host->name); + char buf[256]; + print_hex_or_string(host->client_identifier.len, + host->client_identifier.data, + sizeof(buf) - 1, buf); + parse_warn(cfile, + "Host '%s' already has a uid '%s'", + host->name, buf); + skip_to_rbrace(cfile, 1); break; } @@ -2795,6 +2801,7 @@ void parse_subnet_declaration (cfile, share) if (token != NETMASK) { parse_warn (cfile, "Expecting netmask"); skip_to_semi (cfile); + subnet_dereference (&subnet, MDL); return; } @@ -2898,6 +2905,7 @@ parse_subnet6_declaration(struct parse *cfile, struct shared_network *share) { token = next_token(&val, NULL, cfile); if (token != SLASH) { parse_warn(cfile, "Expecting a '/'."); + subnet_dereference(&subnet, MDL); skip_to_semi(cfile); return; } @@ -2905,6 +2913,7 @@ parse_subnet6_declaration(struct parse *cfile, struct shared_network *share) { token = next_token(&val, NULL, cfile); if (token != NUMBER) { parse_warn(cfile, "Expecting a number."); + subnet_dereference(&subnet, MDL); skip_to_semi(cfile); return; } @@ -2914,12 +2923,14 @@ parse_subnet6_declaration(struct parse *cfile, struct shared_network *share) { (subnet->prefix_len > 128) || (*endp != '\0')) { parse_warn(cfile, "Expecting a number between 0 and 128."); + subnet_dereference(&subnet, MDL); skip_to_semi(cfile); return; } if (!is_cidr_mask_valid(&subnet->net, subnet->prefix_len)) { parse_warn(cfile, "New subnet mask too short."); + subnet_dereference(&subnet, MDL); skip_to_semi(cfile); return; } @@ -3578,6 +3589,11 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile) if (token != EQUAL) { parse_warn (cfile, "expecting '=' in set statement."); + binding_value_dereference(&nv, MDL); + if (newbinding) { + dfree(binding->name, MDL); + dfree(binding, MDL); + } goto badset; } } @@ -3585,6 +3601,10 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile) if (!parse_binding_value(cfile, nv)) { binding_value_dereference(&nv, MDL); lease_dereference(&lease, MDL); + if (newbinding) { + dfree(binding->name, MDL); + dfree(binding, MDL); + } return 0; } @@ -4762,6 +4782,7 @@ parse_ia_na_declaration(struct parse *cfile) { if (token != LBRACE) { parse_warn(cfile, "corrupt lease file; expecting left brace"); skip_to_semi(cfile); + ia_dereference(&ia, MDL); return; } @@ -5209,6 +5230,7 @@ parse_ia_ta_declaration(struct parse *cfile) { if (token != LBRACE) { parse_warn(cfile, "corrupt lease file; expecting left brace"); skip_to_semi(cfile); + ia_dereference(&ia, MDL); return; } @@ -5646,6 +5668,7 @@ parse_ia_pd_declaration(struct parse *cfile) { if (token != LBRACE) { parse_warn(cfile, "corrupt lease file; expecting left brace"); skip_to_semi(cfile); + ia_dereference(&ia, MDL); return; } |