From: Miek Gieben Date: Thu, 7 Apr 2005 09:04:55 +0000 (+0000) Subject: robustness checks in dnssec stuff X-Git-Tag: release-0.50~155 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ead74d441379ec201c87016a708448cf9726b54d;p=thirdparty%2Fldns.git robustness checks in dnssec stuff --- diff --git a/dnssec.c b/dnssec.c index c7865451..b501f08f 100644 --- 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 39a89a87..28f4dc8a 100644 --- 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; } diff --git a/run-test18.c b/run-test18.c index 572873e0..eec9ed94 100644 --- a/run-test18.c +++ b/run-test18.c @@ -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);