]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
made all _free() functions check for existence of their argument.
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Mon, 14 Mar 2005 10:46:08 +0000 (10:46 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Mon, 14 Mar 2005 10:46:08 +0000 (10:46 +0000)
packet.c
rdata.c
resolver.c
rr.c

index 9e7e9b920a579c65d14f71341f4a0f4e47891c44..06d9e13bcff1101e9145133b1f6c8d11e37ea09d 100644 (file)
--- a/packet.c
+++ b/packet.c
@@ -550,23 +550,25 @@ ldns_pkt_new()
 void
 ldns_pkt_free(ldns_pkt *packet)
 {
-       FREE(packet->_header);
-       if (packet->_question) {
-               ldns_rr_list_free(packet->_question);
-       }
-       if (packet->_answer) {
-               ldns_rr_list_free(packet->_answer);
-       }
-       if (packet->_authority) {
-               ldns_rr_list_free(packet->_authority);
-       }
-       if (packet->_additional) {
-               ldns_rr_list_free(packet->_additional);
-       }
-       if (packet->_tsig_rr) {
-               ldns_rr_free(packet->_tsig_rr);
+       if (packet) {
+               FREE(packet->_header);
+               if (packet->_question) {
+                       ldns_rr_list_free(packet->_question);
+               }
+               if (packet->_answer) {
+                       ldns_rr_list_free(packet->_answer);
+               }
+               if (packet->_authority) {
+                       ldns_rr_list_free(packet->_authority);
+               }
+               if (packet->_additional) {
+                       ldns_rr_list_free(packet->_additional);
+               }
+               if (packet->_tsig_rr) {
+                       ldns_rr_free(packet->_tsig_rr);
+               }
+               FREE(packet);
        }
-       FREE(packet);
 }
 
 /**
diff --git a/rdata.c b/rdata.c
index 702ca1ca4397c0a659ae759039f100327f55392b..30561c5710e5e614a96a693a531d39fc248cff2c 100644 (file)
--- a/rdata.c
+++ b/rdata.c
@@ -291,8 +291,10 @@ ldns_rdf_deep_clone(const ldns_rdf *r)
 void
 ldns_rdf_free_data(ldns_rdf *rd)
 {
-       FREE(rd->_data);
-       FREE(rd);
+       if (rd) {
+               FREE(rd->_data);
+               FREE(rd);
+       }
 }
 
 /**
@@ -305,9 +307,6 @@ void
 ldns_rdf_free(ldns_rdf *rd)
 {
        if (rd) {
-               if (rd->_data) {
-                       FREE(rd->_data);
-               }
                FREE(rd);
        }
 }
index 18a66f5a8eef936eecc47a9966cc7570fe6d79ab..c17c5546ccc4f841a296cada0bd4783cd901c165 100644 (file)
@@ -496,9 +496,11 @@ ldns_resolver_new_frm_file(const char *filename)
 void
 ldns_resolver_free(ldns_resolver *res)
 {
-       FREE(res->_searchlist);
-       FREE(res->_nameservers);
-       FREE(res);
+       if (res) {
+               FREE(res->_searchlist);
+               FREE(res->_nameservers);
+               FREE(res);
+       }
 }
 
 /** 
diff --git a/rr.c b/rr.c
index 6ba9e03d4878ec0a9ef424fd417f561569eb2366..a7aa372298542d1306bf23e5613d654e42db67c6 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -47,16 +47,15 @@ void
 ldns_rr_free(ldns_rr *rr)
 {
        uint16_t i;
-       if (ldns_rr_owner(rr)) {
-               ldns_rdf_free(ldns_rr_owner(rr));
-       }
-       for (i = 0; i < ldns_rr_rd_count(rr); i++) {
-               ldns_rdf_free(ldns_rr_rdf(rr, i));
+       if (rr) {
+               if (ldns_rr_owner(rr)) {
+                       ldns_rdf_free(ldns_rr_owner(rr));
+               }
+               for (i = 0; i < ldns_rr_rd_count(rr); i++) {
+                       ldns_rdf_free(ldns_rr_rdf(rr, i));
+               }
+               FREE(rr);
        }
-       /*
-       FREE(ldns_rr_owner(rr));
-       */
-       FREE(rr);
 }
 
 /** 
@@ -396,11 +395,13 @@ ldns_rr_list_free(ldns_rr_list *rr_list)
 {
        uint16_t i;
        
-       for (i=0; i < ldns_rr_list_rr_count(rr_list); i++) {
-               ldns_rr_free(ldns_rr_list_rr(rr_list, i));
+       if (rr_list) {
+               for (i=0; i < ldns_rr_list_rr_count(rr_list); i++) {
+                       ldns_rr_free(ldns_rr_list_rr(rr_list, i));
+               }
+               
+               FREE(rr_list);
        }
-       
-       FREE(rr_list);
 }