diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/confpars.c | 10 | ||||
-rw-r--r-- | server/ddns.c | 5 | ||||
-rw-r--r-- | server/dhcp.c | 3 | ||||
-rw-r--r-- | server/mdb6.c | 2 |
4 files changed, 17 insertions, 3 deletions
diff --git a/server/confpars.c b/server/confpars.c index 99fb9a6d..b50d5072 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 @@ -2795,6 +2798,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 +2902,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 +2910,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 +2920,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; } diff --git a/server/ddns.c b/server/ddns.c index 1bd72f6b..aecc3d38 100644 --- a/server/ddns.c +++ b/server/ddns.c @@ -1285,9 +1285,10 @@ ddns_update_lease_ptr(struct lease *lease, file, line); #endif /* - * never reached. update_lease_failed - * calls log_fatal. + * not reached when update_lease_failed is called, + * it calls log_fatal. */ + ipv6_pool_dereference(&pool, MDL); return(ISC_R_FAILURE); } ipv6_pool_dereference(&pool, MDL); diff --git a/server/dhcp.c b/server/dhcp.c index 6d129ec9..0b6e2326 100644 --- a/server/dhcp.c +++ b/server/dhcp.c @@ -1193,6 +1193,7 @@ void dhcpinform (packet, ms_nulltp) if (d1.len != 4) { log_info("%s: ignored (invalid subnet selection option).", msgbuf); option_state_dereference(&options, MDL); + data_string_forget(&d1, MDL); return; } @@ -1574,6 +1575,7 @@ void dhcpinform (packet, ms_nulltp) option_state_dereference (&options, MDL); if (subnet) subnet_dereference (&subnet, MDL); + data_string_forget (&d1, MDL); return; } @@ -3526,6 +3528,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) (const char *)d1.data, d1.len, MDL)) { log_error ("unknown option space %s.", d1.data); + data_string_forget (&d1, MDL); return; } diff --git a/server/mdb6.c b/server/mdb6.c index 4afb3928..da7baf6e 100644 --- a/server/mdb6.c +++ b/server/mdb6.c @@ -1085,9 +1085,11 @@ create_lease6(struct ipv6_pool *pool, struct iasubopt **addr, case D6O_IA_PD: /* prefix */ log_error("create_lease6: prefix pool."); + data_string_forget(&ds, MDL); return DHCP_R_INVALIDARG; default: log_error("create_lease6: untyped pool."); + data_string_forget(&ds, MDL); return DHCP_R_INVALIDARG; } |