* \param[in] rrset the rrset to verify
* \param[in] rrsig a list of signatures to check
* \param[in] keys a list of keys to check with
- * \return a list of keys which validate the rrsig or NULL if not
+ * \return a list of keys that validate one of the signatures
*/
ldns_rr_list* ldns_verify(ldns_rr_list *rrset, ldns_rr_list *rrsig, ldns_rr_list *keys);
}
if (!ldns_resolver_domain(r)) {
/* _defnames is set, but the domain is not....?? */
- status - ldns_resolver_send(&pkt, r, name, type, class, flags);
+ status = ldns_resolver_send(&pkt, r, name, type, class, flags);
return pkt;
}
}
}
+
+ LDNS_FREE(rd);
+ LDNS_FREE(rd_buf);
+ ldns_buffer_free(rr_buf);
+
LDNS_FREE(rdata);
return new;
}
return NULL;
}
for (i = 0; i < ldns_rr_list_rr_count(rrlist); i++) {
- r = ldns_rr_list_rr(rrlist, i);
+ r = ldns_rr_deep_clone(
+ ldns_rr_list_rr(rrlist, i)
+ );
if (!r) {
/* huh, failure in cloning */
return NULL;
rr2_buf = ldns_buffer_new(rr2_len);
if (ldns_rr2buffer_wire(rr1_buf, rr1, LDNS_SECTION_ANY) != LDNS_STATUS_OK) {
+ ldns_buffer_free(rr1_buf);
+ ldns_buffer_free(rr2_buf);
return 0;
}
if (ldns_rr2buffer_wire(rr2_buf, rr2, LDNS_SECTION_ANY) != LDNS_STATUS_OK) {
+ ldns_buffer_free(rr1_buf);
+ ldns_buffer_free(rr2_buf);
return 0;
}
/* now compare the buffer's byte for byte */
for(i = 0; i < rr1_len; i++) {
if (*ldns_buffer_at(rr1_buf,i) < *ldns_buffer_at(rr2_buf,i)) {
+ ldns_buffer_free(rr1_buf);
+ ldns_buffer_free(rr2_buf);
return -1;
} else if (*ldns_buffer_at(rr1_buf,i) > *ldns_buffer_at(rr2_buf,i)) {
+ ldns_buffer_free(rr1_buf);
+ ldns_buffer_free(rr2_buf);
return +1;
}
}
+ ldns_buffer_free(rr1_buf);
+ ldns_buffer_free(rr2_buf);
return 0;
}
}