]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
robustness checks in dnssec stuff
authorMiek Gieben <miekg@NLnetLabs.nl>
Thu, 7 Apr 2005 09:04:55 +0000 (09:04 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Thu, 7 Apr 2005 09:04:55 +0000 (09:04 +0000)
dnssec.c
rr.c
run-test18.c

index c78654510bcc8217b8f7734963329cc902dc1ac3..b501f08fb6edefc2560f581f3b5076ef19ce81a2 100644 (file)
--- a/dnssec.c
+++ b/dnssec.c
@@ -814,6 +814,10 @@ ldns_sign_public(ldns_rr_list *rrset, ldns_key_list *keys)
        ldns_buffer *sign_buf;
        uint32_t orig_ttl;
 
+       if (!rrset || !keys) {
+               return NULL;
+       }
+
        key_count = 0;
        signatures = ldns_rr_list_new();
 
@@ -821,6 +825,9 @@ ldns_sign_public(ldns_rr_list *rrset, ldns_key_list *keys)
         * prepare the rrset. Sign this together
         */
        rrset_clone = ldns_rr_list_deep_clone(rrset);
+       if (!rrset_clone) {
+               return NULL;
+       }
 
        /* make it canonical */
        for(i = 0; i < ldns_rr_list_rr_count(rrset_clone); i++) {
diff --git a/rr.c b/rr.c
index 39a89a8718e3c25951e1aa6a11fe3f4b93cd18ef..28f4dc8ae944770479cd02b2f84d29c1ad553d2b 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -573,6 +573,10 @@ ldns_rr_deep_clone(ldns_rr *rr)
 {
        uint16_t i;
        ldns_rr *new_rr;
+
+       if (!rr) {
+               return NULL;
+       }
                
        new_rr = ldns_rr_new();
        if (!new_rr) {
@@ -595,14 +599,23 @@ ldns_rr_list_deep_clone(ldns_rr_list *rrlist)
 {
        uint16_t i;
        ldns_rr_list *new_list;
+       ldns_rr *r;
+
+       if (!rrlist) {
+               return NULL;
+       }
 
        new_list = ldns_rr_list_new();
        if (!new_list) {
                return NULL;
        }
        for (i = 0; i < ldns_rr_list_rr_count(rrlist); i++) {
-               ldns_rr_list_push_rr(new_list,
-                               ldns_rr_deep_clone(ldns_rr_list_rr(rrlist, i)));
+               r = ldns_rr_list_rr(rrlist, i);
+               if (!r) {
+                       /* huh, failure in cloning */
+                       return NULL;
+               }
+               ldns_rr_list_push_rr(new_list, r);
        }
        return new_list;
 }
index 572873e06e937352fa10a4d7dab4a4829ebd1322..eec9ed94d39b8db0d89ed094c846379d594019f4 100644 (file)
@@ -70,7 +70,12 @@ main()
        rr = ldns_rr_new_frm_str("a.miek.nl.   A    267.271.122.1t");
        ldns_rr_print(stdout, rr);
        printf("\n");
-       exit(0);
+
+#if 0
+       rr = ldns_rr_new_frm_str("a.miek.nl.   1800   IN   A    195.169.222.38");
+       ldns_rr_print(stdout, rr);
+       printf("\n");
+#endif 
 
        privkey = ldns_key_new_frm_algorithm(LDNS_SIGN_RSASHA1, 512);
        privkey_dsa = ldns_key_new_frm_algorithm(LDNS_SIGN_DSA, 512);