diff options
| author | 刘学利 <[email protected]> | 2021-10-20 09:46:39 +0000 |
|---|---|---|
| committer | 刘学利 <[email protected]> | 2021-10-20 09:46:39 +0000 |
| commit | 090b485d23c2c11c38a67979f73e62bc42caa3fe (patch) | |
| tree | 4503e18539b0d525c4f2c42cf39632224637d33e /src/dns.cpp | |
| parent | 91c01bc536ae8c292682a2cf05c2b6d4f826adde (diff) | |
Patch fix long rr segfaultv2.0.16
Diffstat (limited to 'src/dns.cpp')
| -rw-r--r-- | src/dns.cpp | 7 |
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)) { |
