diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2013-02-15 13:51:54 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2013-02-15 13:51:54 +0000 |
commit | 2f10c3e258216a4694be7302c4a039b26be832bf (patch) | |
tree | 0cc5ddc89809341208b405e0e4b030b820ac614f /examples/ldns-update.c | |
parent | a1ba2d1ca3a1d6c9c36a79a196dd3ccb83ede353 (diff) |
Notes
Diffstat (limited to 'examples/ldns-update.c')
-rw-r--r-- | examples/ldns-update.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/examples/ldns-update.c b/examples/ldns-update.c index e3047dceb128..dca4cbe7a5ca 100644 --- a/examples/ldns-update.c +++ b/examples/ldns-update.c @@ -19,7 +19,7 @@ ldns_update_resolver_new(const char *fqdn, const char *zone, ldns_resolver *r1, *r2; ldns_pkt *query = NULL, *resp; ldns_rr_list *nslist, *iplist; - ldns_rdf *soa_zone, *soa_mname, *ns_name; + ldns_rdf *soa_zone, *soa_mname = NULL, *ns_name; size_t i; ldns_status s; @@ -96,6 +96,7 @@ ldns_update_resolver_new(const char *fqdn, const char *zone, /* Match */ iplist = ldns_get_rr_list_addr_by_name(r1, ns_name, class, 0); (void) ldns_resolver_push_nameserver_rr_list(r2, iplist); + ldns_rr_list_deep_free(iplist); break; } } @@ -109,12 +110,15 @@ ldns_update_resolver_new(const char *fqdn, const char *zone, /* No match, add it now. */ iplist = ldns_get_rr_list_addr_by_name(r1, ns_name, class, 0); (void) ldns_resolver_push_nameserver_rr_list(r2, iplist); + ldns_rr_list_deep_free(iplist); } } ldns_resolver_set_random(r2, false); ldns_pkt_free(resp); ldns_resolver_deep_free(r1); + if (soa_mname) + ldns_rdf_deep_free(soa_mname); return r2; bad: @@ -126,6 +130,8 @@ ldns_update_resolver_new(const char *fqdn, const char *zone, ldns_pkt_free(query); if (resp) ldns_pkt_free(resp); + if (soa_mname) + ldns_rdf_deep_free(soa_mname); return NULL; } @@ -138,7 +144,7 @@ ldns_update_send_simple_addr(const char *fqdn, const char *zone, ldns_pkt *u_pkt = NULL, *r_pkt; ldns_rr_list *up_rrlist; ldns_rr *up_rr; - ldns_rdf *zone_rdf; + ldns_rdf *zone_rdf = NULL; char *rrstr; uint32_t rrstrlen, status = LDNS_STATUS_OK; @@ -231,6 +237,8 @@ ldns_update_send_simple_addr(const char *fqdn, const char *zone, ldns_resolver_deep_free(res); if (u_pkt) ldns_pkt_free(u_pkt); + if (zone_rdf) + ldns_rdf_deep_free(zone_rdf); return LDNS_STATUS_ERR; } @@ -302,8 +310,10 @@ main(int argc, char **argv) printf(";; trying UPDATE with FQDN \"%s\" and IP \"%s\"\n", fqdn, ipaddr ? ipaddr : "<none>"); - printf(";; tsig: \"%s\" \"%s\" \"%s\"\n", tsig_cr.keyname, - tsig_cr.algorithm, tsig_cr.keydata); + if (argc == 6 || argc == 7) { + printf(";; tsig: \"%s\" \"%s\" \"%s\"\n", tsig_cr.keyname, + tsig_cr.algorithm, tsig_cr.keydata); + } ret = ldns_update_send_simple_addr(fqdn, zone, ipaddr, port, defttl, tsig_cred); exit(ret); |