ldns_rr_list *signatures = NULL, *signatures2 = NULL;
ldns_rr_list *keys;
ldns_rr_list *dss;
+
+ ldns_rr_list *my_rrset;
ldns_pkt *my_pkt;
/* hmm, no data, do we have denial? only works if pkt was given,
otherwise caller has to do the check himself */
if (pkt) {
- rrset = ldns_pkt_rr_list_by_type(pkt, LDNS_RR_TYPE_NSEC, LDNS_SECTION_ANY_NOQUESTION);
- if (rrset) {
- if (ldns_rr_list_rr_count(rrset) > 0) {
+ my_rrset = ldns_pkt_rr_list_by_type(pkt, LDNS_RR_TYPE_NSEC, LDNS_SECTION_ANY_NOQUESTION);
+ if (my_rrset) {
+ if (ldns_rr_list_rr_count(my_rrset) > 0) {
type = LDNS_RR_TYPE_NSEC;
other_rrset = true;
} else {
- ldns_rr_list_free(rrset);
+ ldns_rr_list_deep_free(my_rrset);
}
} else {
/* nothing, stop */
} else {
return new_chain;
}
+ } else {
+ my_rrset = (ldns_rr_list *) rrset;
}
-
- new_chain->rrset = ldns_rr_list_clone(rrset);
- name = ldns_rr_owner(ldns_rr_list_rr(rrset, 0));
- type = ldns_rr_get_type(ldns_rr_list_rr(rrset, 0));
- c = ldns_rr_get_class(ldns_rr_list_rr(rrset, 0));
+
+ new_chain->rrset = ldns_rr_list_clone(my_rrset);
+ name = ldns_rr_owner(ldns_rr_list_rr(my_rrset, 0));
+ type = ldns_rr_get_type(ldns_rr_list_rr(my_rrset, 0));
+ c = ldns_rr_get_class(ldns_rr_list_rr(my_rrset, 0));
if (other_rrset) {
- ldns_rr_list_deep_free(rrset);
+ ldns_rr_list_deep_free(my_rrset);
}
/* normally there will only be 1 signature 'set'
void
ldns_dnssec_derive_trust_tree_normal_rrset(ldns_dnssec_trust_tree *new_tree,
ldns_dnssec_data_chain *data_chain,
- ldns_rr *cur_rr,
ldns_rr *cur_sig_rr)
{
size_t i, j;
void
ldns_dnssec_derive_trust_tree_no_sig(ldns_dnssec_trust_tree *new_tree,
- ldns_dnssec_data_chain *data_chain,
- ldns_rr *rr)
+ ldns_dnssec_data_chain *data_chain)
{
size_t i;
ldns_rr_list *cur_rrset;
}
/* option 1 */
if (data_chain->parent) {
- ldns_dnssec_derive_trust_tree_normal_rrset(new_tree, data_chain, cur_rr, cur_sig_rr);
+ ldns_dnssec_derive_trust_tree_normal_rrset(new_tree, data_chain, cur_sig_rr);
}
/* option 2 */
/* no signatures? maybe it's nsec data */
/* just add every rr from parent as new parent */
- ldns_dnssec_derive_trust_tree_no_sig(new_tree, data_chain, cur_rr);
+ ldns_dnssec_derive_trust_tree_no_sig(new_tree, data_chain);
}
}
}
default:
ldns_buffer_free(rawsig_buf);
ldns_buffer_free(verify_buf);
+ ldns_rr_list_deep_free(rrset_clone);
return LDNS_STATUS_CRYPTO_UNKNOWN_ALGO;
}
else {
/* No keys with the corresponding keytag are found */
if (result == LDNS_STATUS_ERR) {
-printf("2\n");
result = LDNS_STATUS_CRYPTO_NO_MATCHING_KEYTAG_DNSKEY;
}
}