From 9cbbb141068c12ed032736e20f982e2a0fb43edc Mon Sep 17 00:00:00 2001 From: Johannes Wegener Date: Thu, 26 Jan 2017 00:07:00 +0100 Subject: [PATCH] do not assume that dns structs are aligned They do not have a fixed alignment in the packet. ARMv5 has separate instructions for unaligned and aligned 16-bit load/store. The aligned ones have undefined behavior if the addresses are unaligned, and that completely breaks packet parsing. Signed-off-by: Johannes Wegener Signed-off-by: Felix Fietkau --- dns.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dns.h b/dns.h index 791159f..4425d4c 100644 --- a/dns.h +++ b/dns.h @@ -55,19 +55,19 @@ struct dns_srv_data { uint16_t priority; uint16_t weight; uint16_t port; -} __attribute__((packed, aligned(2))); +} __attribute__((packed)); struct dns_answer { uint16_t type; uint16_t class; uint32_t ttl; uint16_t rdlength; -} __attribute__((packed, aligned(2))); +} __attribute__((packed)); struct dns_question { uint16_t type; uint16_t class; -} __attribute__((packed, aligned(2))); +} __attribute__((packed)); struct interface; extern int cfg_proto; -- 2.11.0