summaryrefslogtreecommitdiff
path: root/src/dns.cpp
diff options
context:
space:
mode:
author刘学利 <[email protected]>2021-10-20 09:46:39 +0000
committer刘学利 <[email protected]>2021-10-20 09:46:39 +0000
commit090b485d23c2c11c38a67979f73e62bc42caa3fe (patch)
tree4503e18539b0d525c4f2c42cf39632224637d33e /src/dns.cpp
parent91c01bc536ae8c292682a2cf05c2b6d4f826adde (diff)
Patch fix long rr segfaultv2.0.16
Diffstat (limited to 'src/dns.cpp')
-rw-r--r--src/dns.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index df7faa5..4042540 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -459,6 +459,7 @@ int get_rr_content2buf(dns_rr_t *rr, int rr_count, char *rr_buf, int buflen, int
dns_rr->rdata.rrsig.key_tag, dns_rr->rdata.rrsig.signer_name, tmp_buf);
break;
case DNS_TYPE_NSEC:
+ break;
*dns_sec = 2;
len = 0;
tmp_len=MIN(dns_rr->rdata.nsec.maps_len*2, sizeof(tmp_buf)-2)/2;
@@ -481,6 +482,7 @@ int get_rr_content2buf(dns_rr_t *rr, int rr_count, char *rr_buf, int buflen, int
dns_rr->rdata.dnskey.flags, dns_rr->rdata.dnskey.protocol, dns_rr->rdata.dnskey.algo, tmp_buf);
break;
case DNS_TYPE_NSEC3:
+ break;
*dns_sec = 2;
memset(tmp_buf, 0, sizeof(tmp_buf));
memset(maps, 0, sizeof(maps));
@@ -1461,6 +1463,9 @@ int get_one_resource_record(char * msg, char ** ptr, dns_rr_t * rr, char * end)
{
return -1;
}
+
+ *ptr = (char *)original_ptr+rr->rdlength;
+ break;
if((original_ptr+rr->rdlength != (unsigned char*)*ptr) && (*ptr != NULL))
{
@@ -1503,6 +1508,8 @@ int get_one_resource_record(char * msg, char ** ptr, dns_rr_t * rr, char * end)
//salt_len = *(unsigned char *)(*ptr+4); /* salt length */
//hash_len = *(salt_len + (unsigned char *)(*ptr+5)); /* hash length */
get_rr_type_nsec3(ptr, &(rr->rdata.nsec3), end);
+ *ptr = (char *)original_ptr+rr->rdlength;
+ break;
if((original_ptr+rr->rdlength != (unsigned char*)*ptr) && (*ptr != NULL))
{