Commit 4619d946 authored by Simon Kelley's avatar Simon Kelley

Fix SEGV and failure to validate on x86_64.

parent 0975a58e
...@@ -461,7 +461,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int ...@@ -461,7 +461,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
rc = memcmp(buff1, buff2, len); rc = memcmp(buff1, buff2, len);
if (rc == 1 || (rc == 0 && quit && len1 > len2)) if (rc > 0 || (rc == 0 && quit && len1 > len2))
{ {
unsigned char *tmp = rrset[i+1]; unsigned char *tmp = rrset[i+1];
rrset[i+1] = rrset[i]; rrset[i+1] = rrset[i];
...@@ -830,7 +830,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch ...@@ -830,7 +830,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
if (recp1->uid == (int)hash->digest_size && if (recp1->uid == (int)hash->digest_size &&
(ds_digest = blockdata_retrieve(recp1->addr.key.keydata, recp1->uid, NULL)) && (ds_digest = blockdata_retrieve(recp1->addr.key.keydata, recp1->uid, NULL)) &&
memcmp (ds_digest, digest, recp1->uid) == 0 && memcmp(ds_digest, digest, recp1->uid) == 0 &&
validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, key, rdlen - 4, algo, keytag)) validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, key, rdlen - 4, algo, keytag))
{ {
struct all_addr a; struct all_addr a;
......
...@@ -1476,6 +1476,7 @@ static struct frec *allocate_frec(time_t now) ...@@ -1476,6 +1476,7 @@ static struct frec *allocate_frec(time_t now)
#endif #endif
#ifdef HAVE_DNSSEC #ifdef HAVE_DNSSEC
f->blocking_query = NULL; f->blocking_query = NULL;
f->stash = NULL;
#endif #endif
daemon->frec_list = f; daemon->frec_list = f;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment