]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
free'em
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Thu, 11 Aug 2005 13:43:35 +0000 (13:43 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Thu, 11 Aug 2005 13:43:35 +0000 (13:43 +0000)
keys.c
ldns/keys.h
signzone.c

diff --git a/keys.c b/keys.c
index bf00eea5767fb9ec368e6656cae70cc39e250755..4109dc17585f3d75358d6bc6d57fd51c2beb3fe6 100644 (file)
--- 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);
+}
index c5fbef1e9a8e10927f8eb7d3ae1440a82ab415a9..be5272d27707af5814ac642e7dba79c9c2ce33a0 100644 (file)
@@ -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 */
index 9cfca3fced565904f91e05a463cc6758d33455a8..d5fef5c3341ff1a6f413bf2d2f38b3c8ea466ad3 100644 (file)
@@ -111,6 +111,7 @@ main(int argc, char *argv[])
                fclose(zonefile);
        }
        
+       ldns_key_list_free(keys);
        ldns_rdf_deep_free(origin);
        
         return 0;