Fix CNAME buff too short issue
This commit is contained in:
@@ -265,6 +265,7 @@ static int _dns_add_qr_head(struct dns_data_context *data_context, char *domain,
|
||||
static int _dns_get_qr_head(struct dns_data_context *data_context, char *domain, int maxsize, int *qtype, int *qclass)
|
||||
{
|
||||
int i;
|
||||
int is_read_all = 0;
|
||||
/* question head */
|
||||
/* |domain |
|
||||
* |qtype | qclass |
|
||||
@@ -278,6 +279,7 @@ static int _dns_get_qr_head(struct dns_data_context *data_context, char *domain,
|
||||
domain++;
|
||||
data_context->ptr++;
|
||||
i++;
|
||||
is_read_all = 1;
|
||||
break;
|
||||
}
|
||||
*domain = *data_context->ptr;
|
||||
@@ -286,6 +288,9 @@ static int _dns_get_qr_head(struct dns_data_context *data_context, char *domain,
|
||||
}
|
||||
|
||||
*domain = '\0';
|
||||
if (is_read_all == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (_dns_data_left_len(data_context) < 4) {
|
||||
return -1;
|
||||
|
||||
@@ -1428,13 +1428,13 @@ static int _dns_server_process_answer(struct dns_request *request, char *domain,
|
||||
request->rcode = packet->head.rcode;
|
||||
} break;
|
||||
case DNS_T_NS: {
|
||||
char cname[128];
|
||||
dns_get_CNAME(rrs, name, 128, &ttl, cname, 128);
|
||||
char cname[DNS_MAX_CNAME_LEN];
|
||||
dns_get_CNAME(rrs, name, DNS_MAX_CNAME_LEN, &ttl, cname, DNS_MAX_CNAME_LEN);
|
||||
tlog(TLOG_DEBUG, "NS: %s ttl:%d cname: %s\n", name, ttl, cname);
|
||||
} break;
|
||||
case DNS_T_CNAME: {
|
||||
char cname[128];
|
||||
dns_get_CNAME(rrs, name, 128, &ttl, cname, 128);
|
||||
char cname[DNS_MAX_CNAME_LEN];
|
||||
dns_get_CNAME(rrs, name, DNS_MAX_CNAME_LEN, &ttl, cname, DNS_MAX_CNAME_LEN);
|
||||
tlog(TLOG_DEBUG, "name:%s ttl: %d cname: %s\n", name, ttl, cname);
|
||||
safe_strncpy(request->cname, cname, DNS_MAX_CNAME_LEN);
|
||||
request->ttl_cname = ttl;
|
||||
|
||||
Reference in New Issue
Block a user