summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2024-11-15 11:03:10 +0800
committerliuxueli <[email protected]>2024-11-15 11:03:10 +0800
commit364c16835c90ee4e82153635a18fbc0e4f7cccd4 (patch)
tree598302c76a1c0c3e4980387a425f812428369a78 /src
parent35d27b82e703a0e36b36d4d532527a79326c9257 (diff)
Bugfix: The ms/txt/null buffer ends with \0HEADv2.1.8master
Diffstat (limited to 'src')
-rw-r--r--src/dns.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index cf8c6d8..d8d5d6b 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -1606,7 +1606,7 @@ int get_one_resource_record(char *msg, char **ptr, dns_rr_t *rr, const char *en
*ptr += rr->rdlength;
break;
}
- len = MIN(DNS_MAX_NAME-1, rr->rdlength-2);/*size=1byte*/
+ len = MIN(DNS_MAX_NAME, rr->rdlength-2);/*size=1byte*/
memcpy(rr->rdata.mx.exchange, *ptr, len); /* error labels */
rr->rdata.mx.exchange[len]='\0';
*ptr += rr->rdlength-2;
@@ -1668,8 +1668,9 @@ int get_one_resource_record(char *msg, char **ptr, dns_rr_t *rr, const char *en
(*ptr)+=1;
break;
case DNS_TYPE_TXT:
- len = MIN(DNS_MAX_NAME-1, rr->rdlength-1);/*size=1byte*/
+ len = MIN(DNS_MAX_NAME, rr->rdlength-1);/*size=1byte*/
memcpy(rr->rdata.txt.txt, *ptr+1, len);
+ rr->rdata.txt.txt[len]='\0';
rr->rdata.txt.size = len;
*ptr += rr->rdlength;
break;
@@ -1686,8 +1687,9 @@ int get_one_resource_record(char *msg, char **ptr, dns_rr_t *rr, const char *en
}
break;
case DNS_TYPE_NULL:
- len = MIN(DNS_MAX_NAME-1, rr->rdlength-1); /*size=1byte*/
+ len = MIN(DNS_MAX_NAME, rr->rdlength-1); /*size=1byte*/
memcpy(rr->rdata.null.null, *ptr+1, len);
+ rr->rdata.null.null[len]='\0';
rr->rdata.null.size = len;
*ptr += rr->rdlength;
break;