]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
trace: Use explicit alignment requirements to avoid misalignment
authorJouni Malinen <j@w1.fi>
Tue, 7 Jul 2015 10:04:08 +0000 (13:04 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 7 Jul 2015 13:25:06 +0000 (16:25 +0300)
64-bit builds with CONFIG_WPA_TRACE=y resulted in the wpabuf pointers
getting misaligned (only 32-bit aligned) and that would result in reads
and writes of unaligned size_t values. Avoid this by indicating explicit
alignment requirement for wpabuf_trace to 8 octets (i.e., there will be
extra four octets of padding in case of 64-bit builds).

Similarly, struct os_alloc_trace resulted in some potential misalignment
cases, e.g., when CONFIG_ACS=y uses a 'long double' variable within
struct hostapd_channel_data. Avoid misalignment issues with explicit
alignment indication.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/utils/os_unix.c
src/utils/wpabuf.c

index e4259042a1e94cc2efdf71b5f33642b81fec193f..089b880bd3f46890d2b0a7e82253082e46d4e71f 100644 (file)
@@ -36,7 +36,7 @@ struct os_alloc_trace {
        struct dl_list list;
        size_t len;
        WPA_TRACE_INFO
-};
+} __attribute__((aligned(16)));
 
 #endif /* WPA_TRACE */
 
index 7aafa0a5169ba775bd681850bffe21def1097518..11e7323619de8b2131e51ce00afb08c864f92582 100644 (file)
@@ -17,7 +17,7 @@
 
 struct wpabuf_trace {
        unsigned int magic;
-};
+} __attribute__((aligned(8)));
 
 static struct wpabuf_trace * wpabuf_get_trace(const struct wpabuf *buf)
 {