]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
memory
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 24 Aug 2005 15:13:36 +0000 (15:13 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 24 Aug 2005 15:13:36 +0000 (15:13 +0000)
dnssec.c
keys.c
signzone.c
str2host.c

index 7cb84f9e8526e08617deaa8be5540c2e4b91a39a..ed362efc5f4d9796d9e03cb86b6daa434414a0e8 100644 (file)
--- 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 12845a95c348395b0235ae6170a9d937da3a6abb..f0ad76248b23ca7e1e25fc6c63d40d3bde8268e0 100644 (file)
--- 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);
 }
 
index 6989e7f700e2cb5095d65b3ebdaed63925571764..93a422cdf1a2f973d99f3d2f1169cd3c6c87c384 100644 (file)
@@ -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;
 }
index 8476c1615e3bdfaced7f3e5ebaffae81da683580..421cb725d147062a0a063f6d0b74d0480bf39e76 100644 (file)
@@ -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;