summaryrefslogtreecommitdiff
path: root/util/data/msgparse.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/msgparse.c
parente2fe726866d062155f6b1aae749375475ef19191 (diff)
Diffstat (limited to 'util/data/msgparse.c')
-rw-r--r--util/data/msgparse.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/util/data/msgparse.c b/util/data/msgparse.c
index fb312370366d..7c32618a3015 100644
--- a/util/data/msgparse.c
+++ b/util/data/msgparse.c
@@ -55,7 +55,11 @@ smart_compare(sldns_buffer* pkt, uint8_t* dnow,
{
if(LABEL_IS_PTR(*dnow)) {
/* ptr points to a previous dname */
- uint8_t* p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1]));
+ uint8_t* p;
+ if((size_t)PTR_OFFSET(dnow[0], dnow[1])
+ >= sldns_buffer_limit(pkt))
+ return -1;
+ p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1]));
if( p == dprfirst || p == dprlast )
return 0;
/* prev dname is also a ptr, both ptrs are the same. */