From: Jelte Jansen Date: Thu, 19 May 2005 14:24:47 +0000 (+0000) Subject: memory management X-Git-Tag: release-0.60^2~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4186accc2efd026de219038fecfa97524439860d;p=thirdparty%2Fldns.git memory management --- diff --git a/dnssec.c b/dnssec.c index 007fb3c4..beaf0c6e 100644 --- a/dnssec.c +++ b/dnssec.c @@ -347,7 +347,9 @@ ldns_verify_rrsig(ldns_rr_list *rrset, ldns_rr *rrsig, ldns_rr *key) } /* no longer needed */ +/* ldns_rr_list_free(rrset_clone); +*/ ldns_buffer_free(rawsig_buf); ldns_buffer_free(verify_buf); return result; diff --git a/ldns/dnssec.h b/ldns/dnssec.h index c3b7e9e6..7fdf03d3 100644 --- a/ldns/dnssec.h +++ b/ldns/dnssec.h @@ -53,7 +53,7 @@ uint16_t ldns_calc_keytag(ldns_rr *key); * \param[in] rrset the rrset to verify * \param[in] rrsig a list of signatures to check * \param[in] keys a list of keys to check with - * \return a list of keys which validate the rrsig or NULL if not + * \return a list of keys that validate one of the signatures */ ldns_rr_list* ldns_verify(ldns_rr_list *rrset, ldns_rr_list *rrsig, ldns_rr_list *keys); diff --git a/resolver.c b/resolver.c index 532c5314..eb0289eb 100644 --- a/resolver.c +++ b/resolver.c @@ -595,7 +595,7 @@ ldns_resolver_query(ldns_resolver *r, ldns_rdf *name, ldns_rr_type type, ldns_rr } if (!ldns_resolver_domain(r)) { /* _defnames is set, but the domain is not....?? */ - status - ldns_resolver_send(&pkt, r, name, type, class, flags); + status = ldns_resolver_send(&pkt, r, name, type, class, flags); return pkt; } diff --git a/rr.c b/rr.c index 12a62ccf..f4d4d217 100644 --- a/rr.c +++ b/rr.c @@ -261,6 +261,11 @@ ldns_rr_new_frm_str(const char *str) } } + + LDNS_FREE(rd); + LDNS_FREE(rd_buf); + ldns_buffer_free(rr_buf); + LDNS_FREE(rdata); return new; } @@ -688,7 +693,9 @@ ldns_rr_list_deep_clone(ldns_rr_list *rrlist) return NULL; } for (i = 0; i < ldns_rr_list_rr_count(rrlist); i++) { - r = ldns_rr_list_rr(rrlist, i); + r = ldns_rr_deep_clone( + ldns_rr_list_rr(rrlist, i) + ); if (!r) { /* huh, failure in cloning */ return NULL; @@ -741,19 +748,29 @@ ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2) rr2_buf = ldns_buffer_new(rr2_len); if (ldns_rr2buffer_wire(rr1_buf, rr1, LDNS_SECTION_ANY) != LDNS_STATUS_OK) { + ldns_buffer_free(rr1_buf); + ldns_buffer_free(rr2_buf); return 0; } if (ldns_rr2buffer_wire(rr2_buf, rr2, LDNS_SECTION_ANY) != LDNS_STATUS_OK) { + ldns_buffer_free(rr1_buf); + ldns_buffer_free(rr2_buf); return 0; } /* now compare the buffer's byte for byte */ for(i = 0; i < rr1_len; i++) { if (*ldns_buffer_at(rr1_buf,i) < *ldns_buffer_at(rr2_buf,i)) { + ldns_buffer_free(rr1_buf); + ldns_buffer_free(rr2_buf); return -1; } else if (*ldns_buffer_at(rr1_buf,i) > *ldns_buffer_at(rr2_buf,i)) { + ldns_buffer_free(rr1_buf); + ldns_buffer_free(rr2_buf); return +1; } } + ldns_buffer_free(rr1_buf); + ldns_buffer_free(rr2_buf); return 0; } }