From: Jelte Jansen Date: Thu, 11 Aug 2005 13:43:35 +0000 (+0000) Subject: free'em X-Git-Tag: release-1.0.0~297 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc462f4c0d18ff85eb3d7d9e182dc515a510dc89;p=thirdparty%2Fldns.git free'em --- diff --git a/keys.c b/keys.c index bf00eea5..4109dc17 100644 --- a/keys.c +++ b/keys.c @@ -252,6 +252,9 @@ ldns_key_new_frm_fp_rsa(FILE *f) if (!rsa->iqmp) { goto error; } + + LDNS_FREE(buf); + LDNS_FREE(d); return rsa; error: @@ -489,7 +492,8 @@ ldns_key_list_push_key(ldns_key_list *key_list, ldns_key *key) ldns_key **keys; key_count = ldns_key_list_key_count(key_list); - + keys = key_list->_keys; + /* grow the array */ keys = LDNS_XREALLOC( key_list->_keys, ldns_key *, key_count + 1); @@ -662,3 +666,29 @@ ldns_key2rr(ldns_key *k) ldns_rr_push_rdf(pubkey, keybin); return pubkey; } + +void +ldns_key_free(ldns_key *key) +{ + LDNS_FREE(key); +} + +void +ldns_key_deep_free(ldns_key *key) +{ + if (ldns_key_pubkey_owner(key)) { + ldns_rdf_free(ldns_key_pubkey_owner(key)); + } + LDNS_FREE(key); +} + +void +ldns_key_list_free(ldns_key_list *key_list) +{ + size_t i; + for (i = 0; i < ldns_key_list_key_count(key_list); i++) { + ldns_key_deep_free(ldns_key_list_key(key_list, i)); + } + LDNS_FREE(key_list->_keys); + LDNS_FREE(key_list); +} diff --git a/ldns/keys.h b/ldns/keys.h index c5fbef1e..be5272d2 100644 --- a/ldns/keys.h +++ b/ldns/keys.h @@ -204,4 +204,27 @@ ldns_rr *ldns_key2rr(ldns_key *k); */ void ldns_key_print(FILE *output, ldns_key *k); +/** + * frees a key structure + * + * \param[in] key the key object to free + */ +void ldns_key_free(ldns_key *key); + +/** + * frees a key structure and all it's internal data + * + * \param[in] key the key object to free + */ +void ldns_key_deep_free(ldns_key *key); + +/** + * frees a key list structure + * + * \param[in] key the key list object to free + */ +void ldns_key_list_free(ldns_key_list *key_list); + + + #endif /* _LDNS_KEYS_H */ diff --git a/signzone.c b/signzone.c index 9cfca3fc..d5fef5c3 100644 --- a/signzone.c +++ b/signzone.c @@ -111,6 +111,7 @@ main(int argc, char *argv[]) fclose(zonefile); } + ldns_key_list_free(keys); ldns_rdf_deep_free(origin); return 0;