summaryrefslogtreecommitdiff
path: root/util/data/packed_rrset.c
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2020-05-21 05:01:52 +0000
committerCy Schubert <cy@FreeBSD.org>2020-05-21 05:01:52 +0000
commit6a53c00e64c4cf911eb00846733d9e6a47b2e7f4 (patch)
tree60a7720d2d4edfe62b094e2665743e8879ebb911 /util/data/packed_rrset.c
parente2fe726866d062155f6b1aae749375475ef19191 (diff)
downloadsrc-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.c21
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;
+}