From: Jelte Jansen Date: Wed, 24 Aug 2005 15:13:36 +0000 (+0000) Subject: memory X-Git-Tag: release-1.0.0~245 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0085db89c97c3397dc16a933c02c4eca3de2de5;p=thirdparty%2Fldns.git memory --- diff --git a/dnssec.c b/dnssec.c index 7cb84f9e..ed362efc 100644 --- a/dnssec.c +++ b/dnssec.c @@ -1142,6 +1142,7 @@ ldns_sign_public(ldns_rr_list *rrset, ldns_key_list *keys) ldns_buffer_free(sign_buf); /* restart for the next key */ } + ldns_rr_list_deep_free(rrset_clone); return signatures; } @@ -1345,6 +1346,8 @@ ldns_create_nsec(ldns_rdf *cur_owner, ldns_rdf *next_owner, ldns_rr_list *rrs) ldns_rr_push_rdf(nsec, ldns_rdf_new_frm_data(LDNS_RDF_TYPE_NSEC, cur_data_size, data)); + LDNS_FREE(bitmap); + LDNS_FREE(data); return nsec; } @@ -1439,8 +1442,6 @@ ldns_zone_sign(ldns_zone *zone, ldns_key_list *key_list) uint16_t i; ldns_rr_type cur_rrset_type; - ldns_rr_list *next_rrset; - signed_zone = ldns_zone_new(); /* there should only be 1 SOA, so the soa record is 1 rrset */ @@ -1448,14 +1449,14 @@ ldns_zone_sign(ldns_zone *zone, ldns_key_list *key_list) ldns_rr_list_push_rr(soa_rrset, ldns_zone_soa(zone)); cur_rrsigs = ldns_sign_public(soa_rrset, key_list); cur_dname = ldns_rr_owner(ldns_rr_list_rr(soa_rrset, 0)); + ldns_rr_list_free(soa_rrset); ldns_zone_set_soa(signed_zone, ldns_rr_clone(ldns_zone_soa(zone))); ldns_zone_push_rr_list(signed_zone, cur_rrsigs); + ldns_rr_list_free(cur_rrsigs); orig_zone_rrs = ldns_rr_list_clone(ldns_zone_rrs(zone)); signed_zone_rrs = ldns_rr_list_new(); - next_rrset = ldns_rr_list_pop_rrset(orig_zone_rrs); - next_dname = ldns_rr_owner(ldns_rr_list_rr(next_rrset, 0)); /* printf("UNSORTED:\n"); @@ -1500,13 +1501,15 @@ ldns_zone_sign(ldns_zone *zone, ldns_key_list *key_list) cur_rrsigs = ldns_sign_public(cur_rrset, key_list); ldns_zone_push_rr_list(signed_zone, cur_rrset); ldns_zone_push_rr_list(signed_zone, cur_rrsigs); + ldns_rr_list_free(cur_rrsigs); } else { /* push it unsigned? */ ldns_zone_push_rr_list(signed_zone, cur_rrset); } + ldns_rr_list_free(cur_rrset); cur_rrset = ldns_rr_list_pop_rrset(signed_zone_rrs); } - + ldns_rr_list_free(signed_zone_rrs); return signed_zone; } diff --git a/keys.c b/keys.c index 12845a95..f0ad7624 100644 --- a/keys.c +++ b/keys.c @@ -53,6 +53,9 @@ ldns_key_new() ldns_key_set_inception(newkey, 0); ldns_key_set_expiration(newkey, 0); ldns_key_set_pubkey_owner(newkey, NULL); + ldns_key_set_rsa_key(newkey, NULL); + ldns_key_set_dsa_key(newkey, NULL); + ldns_key_set_hmac_key(newkey, NULL); return newkey; } } @@ -708,6 +711,21 @@ ldns_key_deep_free(ldns_key *key) if (ldns_key_pubkey_owner(key)) { ldns_rdf_deep_free(ldns_key_pubkey_owner(key)); } + switch(ldns_key_algorithm(key)) { + case LDNS_SIGN_RSASHA1: + case LDNS_SIGN_RSAMD5: + if (ldns_key_rsa_key(key)) { + RSA_free(ldns_key_rsa_key(key)); + } + break; + case LDNS_SIGN_DSA: + if (ldns_key_dsa_key(key)) { + DSA_free(ldns_key_dsa_key(key)); + } + break; + case LDNS_SIGN_HMACMD5: + break; + } LDNS_FREE(key); } diff --git a/signzone.c b/signzone.c index 6989e7f7..93a422cd 100644 --- a/signzone.c +++ b/signzone.c @@ -67,7 +67,6 @@ struct tm tm; exit(1); } else { orig_zone = ldns_zone_new_frm_fp_l(zonefile, origin, ttl, class, &line_nr); - if (!orig_zone) { fprintf(stderr, "Zone not read\n"); } else { @@ -82,7 +81,7 @@ struct tm tm; /*origin = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, ".");*/ origin = ldns_rr_owner(orig_soa); } - + keys = ldns_key_list_new(); @@ -135,8 +134,9 @@ strftime(date_buf, 15, "%Y%m%d%H%M%S", &tm); } else { fprintf(stderr, "Error signing zone."); } - ldns_zone_deep_free(orig_zone); ldns_key_list_free(keys); + + ldns_zone_deep_free(orig_zone); return 0; } diff --git a/str2host.c b/str2host.c index 8476c161..421cb725 100644 --- a/str2host.c +++ b/str2host.c @@ -829,8 +829,9 @@ ldns_str2rdf_wks(ldns_rdf **rd, const char *str) *rd = ldns_rdf_new_frm_data(LDNS_RDF_TYPE_WKS, (uint16_t) (bm_len + 1), data); LDNS_FREE(token); - LDNS_FREE(str_buf); + ldns_buffer_free(str_buf); LDNS_FREE(bitmap); + LDNS_FREE(data); free(proto_str); return LDNS_STATUS_OK;