diff options
author | Cy Schubert <cy@FreeBSD.org> | 2020-05-21 05:01:52 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2020-05-21 05:01:52 +0000 |
commit | 6a53c00e64c4cf911eb00846733d9e6a47b2e7f4 (patch) | |
tree | 60a7720d2d4edfe62b094e2665743e8879ebb911 /util/data/packed_rrset.c | |
parent | e2fe726866d062155f6b1aae749375475ef19191 (diff) | |
download | src-test2-6a53c00e64c4cf911eb00846733d9e6a47b2e7f4.tar.gz src-test2-6a53c00e64c4cf911eb00846733d9e6a47b2e7f4.zip |
Vendor import of Unbound 1.10.1.vendor/unbound/1.10.1
Security: CVE-2020-12662, CVE-2020-12663
Notes
Notes:
svn path=/vendor/unbound/dist/; revision=361322
svn path=/vendor/unbound/1.10.1/; revision=361323; tag=vendor/unbound/1.10.1
Diffstat (limited to 'util/data/packed_rrset.c')
-rw-r--r-- | util/data/packed_rrset.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 7b9d5494d960..4b0294f9724b 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -40,6 +40,7 @@ */ #include "config.h" +#include "util/data/msgparse.h" #include "util/data/packed_rrset.h" #include "util/data/dname.h" #include "util/storage/lookup3.h" @@ -351,11 +352,11 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, /* make TTLs relative - once per rrset */ for(i=0; i<d->count + d->rrsig_count; i++) { if(d->rr_ttl[i] < now) - d->rr_ttl[i] = 0; + d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; else d->rr_ttl[i] -= now; } if(d->ttl < now) - d->ttl = 0; + d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; else d->ttl -= now; return ck; } @@ -386,3 +387,19 @@ packed_rrset_copy_alloc(struct ub_packed_rrset_key* key, packed_rrset_ttl_add(dd, now); return dk; } + +int +packed_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata, size_t len, + size_t* index) +{ + size_t i; + for(i=0; i<d->count; i++) { + if(d->rr_len[i] != len) + continue; + if(memcmp(d->rr_data[i], rdata, len) == 0) { + *index = i; + return 1; + } + } + return 0; +} |