- Fix #1301: memory leak in respip and tests.

git-svn-id: file:///svn/unbound/trunk@4228 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2017-06-16 07:27:49 +00:00
parent 7bb1d8a8d1
commit 20f8dafcd4
3 changed files with 19 additions and 0 deletions

View file

@ -1,3 +1,6 @@
16 June 2017: Wouter
- Fix #1301: memory leak in respip and tests.
15 June 2017: Wouter 15 June 2017: Wouter
- Fix stub zone queries leaking to the internet for - Fix stub zone queries leaking to the internet for
harden-referral-path ns checks. harden-referral-path ns checks.

View file

@ -261,6 +261,7 @@ respip_enter_rr(struct regional* region, struct resp_addr* raddr,
log_err("bad response-ip-data: %s", rrstr); log_err("bad response-ip-data: %s", rrstr);
return 0; return 0;
} }
free(nm);
sa = (struct sockaddr*)&raddr->node.addr; sa = (struct sockaddr*)&raddr->node.addr;
if (rrtype == LDNS_RR_TYPE_CNAME && raddr->data) { if (rrtype == LDNS_RR_TYPE_CNAME && raddr->data) {
log_err("CNAME response-ip data (%s) can not co-exist with other " log_err("CNAME response-ip data (%s) can not co-exist with other "

View file

@ -627,6 +627,9 @@ respip_conf_actions_test(void)
} }
unit_assert(respip_global_apply_cfg(set, &cfg)); unit_assert(respip_global_apply_cfg(set, &cfg));
verify_respip_set_actions(set, config_response_ip, clen); verify_respip_set_actions(set, config_response_ip, clen);
respip_set_delete(set);
config_deldblstrlist(cfg.respip_actions);
} }
/** Per-view respip actions test; apply raw configuration with two views /** Per-view respip actions test; apply raw configuration with two views
@ -694,6 +697,12 @@ respip_view_conf_actions_test(void)
unit_assert(v); unit_assert(v);
verify_respip_set_actions(v->respip_set, config_response_ip_view2, clen2); verify_respip_set_actions(v->respip_set, config_response_ip_view2, clen2);
lock_rw_unlock(&v->lock); lock_rw_unlock(&v->lock);
views_delete(views);
free(cv1->name);
free(cv1);
free(cv2->name);
free(cv2);
} }
typedef struct addr_data {char* ip; char* data;} addr_data_t; typedef struct addr_data {char* ip; char* data;} addr_data_t;
@ -778,6 +787,8 @@ respip_conf_data_test(void)
verify_rrset(set, "192.0.1.0/24", "11.12.13.14", 1, LDNS_RR_TYPE_A); verify_rrset(set, "192.0.1.0/24", "11.12.13.14", 1, LDNS_RR_TYPE_A);
verify_rrset(set, "192.0.2.0/24", "www.example.com", 0, LDNS_RR_TYPE_CNAME); verify_rrset(set, "192.0.2.0/24", "www.example.com", 0, LDNS_RR_TYPE_CNAME);
verify_rrset(set, "2001:db8:1::/48", "2001:db8:1::2:1", 0, LDNS_RR_TYPE_AAAA); verify_rrset(set, "2001:db8:1::/48", "2001:db8:1::2:1", 0, LDNS_RR_TYPE_AAAA);
respip_set_delete(set);
} }
/** Test per-view respip redirect w/ data directives */ /** Test per-view respip redirect w/ data directives */
@ -814,6 +825,10 @@ respip_view_conf_data_test(void)
0, LDNS_RR_TYPE_CNAME); 0, LDNS_RR_TYPE_CNAME);
verify_rrset(v->respip_set, "2001:db8:1::/48", "2001:db8:1::2:1", verify_rrset(v->respip_set, "2001:db8:1::/48", "2001:db8:1::2:1",
0, LDNS_RR_TYPE_AAAA); 0, LDNS_RR_TYPE_AAAA);
views_delete(views);
free(cv->name);
free(cv);
} }
/** respip unit tests */ /** respip unit tests */