netdb: fix access within misaligned address error
netdb/lib_dnsquery.c:444:14: runtime error: member access within misaligned address 0xef2f5a1b for type 'struct dns_question_s', which requires 2 byte alignment 0xef2f5a1b: note: pointer points here 63 6f 6d 00 00 01 00 01 c0 0c 00 05 00 01 00 00 00 1c 00 1a 05 6d 75 73 69 63 06 6e 74 65 73 35 ^ netdb/lib_dnsquery.c:445:14: runtime error: member access within misaligned address 0xef2f5a1b for type 'struct dns_question_s', which requires 2 byte alignment 0xef2f5a1b: note: pointer points here 63 6f 6d 00 00 01 00 01 c0 0c 00 05 00 01 00 00 00 1c 00 1a 05 6d 75 73 69 63 06 6e 74 65 73 35 ^ Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
7381245159
commit
3f94828f6b
@ -334,6 +334,7 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int naddr,
|
||||
FAR struct dns_answer_s *ans;
|
||||
FAR struct dns_header_s *hdr;
|
||||
FAR struct dns_question_s *que;
|
||||
struct dns_question_s bak;
|
||||
uint16_t nquestions;
|
||||
uint16_t nanswers;
|
||||
uint16_t temp;
|
||||
@ -437,12 +438,13 @@ static int dns_recv_response(int sd, FAR union dns_addr_u *addr, int naddr,
|
||||
/* Validate query type and class */
|
||||
|
||||
que = (FAR struct dns_question_s *)nameptr;
|
||||
memcpy(&bak, que, sizeof(struct dns_question_s));
|
||||
|
||||
/* N.B. Unaligned access may occur here */
|
||||
|
||||
temp = HTONS(DNS_CLASS_IN);
|
||||
if (memcmp(&que->type, &qinfo->rectype, sizeof(uint16_t)) != 0 ||
|
||||
memcmp(&que->class, &temp, sizeof(uint16_t)) != 0)
|
||||
if (memcmp(&bak.type, &qinfo->rectype, sizeof(uint16_t)) != 0 ||
|
||||
memcmp(&bak.class, &temp, sizeof(uint16_t)) != 0)
|
||||
{
|
||||
nerr("ERROR: DNS response with wrong question\n");
|
||||
return -EBADMSG;
|
||||
|
Loading…
Reference in New Issue
Block a user