}
static uint8_t * __pcap_dns_name_info(uint8_t *dns_h,
- uint8_t *data, u_char *name)
+ uint8_t *data, u_char *name, uint32_t *pktlen)
{
uint8_t *sec = data;
u_char *dname = name;
break;
}
- if (dname + *sec >= name + BUFF_SIZE_NAME) {
+ if (dname + *sec >= name + *pktlen) {
*name = '\0';
return NULL;
}
int i = 0;
for (i = 0; i < qdcount; ++i) {
- u_char name[BUFF_SIZE_NAME];
+ u_char name[*pktlen];
uint16_t type;
uint16_t class;
STC_LOGD("[Queries]");
}
- data = __pcap_dns_name_info((uint8_t *)dns_h, data, name);
+ data = __pcap_dns_name_info((uint8_t *)dns_h, data, name, pktlen);
if (data == NULL)
return;
}
for (i = 0; i < ancount; ++i) {
- u_char name[BUFF_SIZE_NAME];
- u_char cname[BUFF_SIZE_NAME];
+ u_char name[*pktlen];
+ u_char cname[*pktlen];
uint16_t type;
uint16_t class;
uint32_t ttl;
STC_LOGD("[Answers]");
}
- data = __pcap_dns_name_info((uint8_t *)dns_h, data, name);
+ data = __pcap_dns_name_info((uint8_t *)dns_h, data, name, pktlen);
if (data == NULL)
return;
ttl, length, ip);
break;
case DNS_QTYPE_CNAME:
- __pcap_dns_name_info((uint8_t *)dns_h, &data[10], cname);
+ __pcap_dns_name_info((uint8_t *)dns_h, &data[10], cname, pktlen);
if (STC_PCAP_LOG)
STC_LOGD("Name[%s] Type[%u:%s] Class[0x%04x:%s] "
"TTL[%u] Data length[%u] CName[%s]",