diff --git a/src/utils/platform.h b/src/utils/platform.h index 813987eb6..b2ad856b9 100644 --- a/src/utils/platform.h +++ b/src/utils/platform.h @@ -1,21 +1,18 @@ +/* + * Platform definitions for Radiotap parser + * Copyright (c) 2021, Jouni Malinen + * + * This software may be distributed under the terms of the BSD license. + * See README for more details. + */ + #ifndef PLATFORM_H #define PLATFORM_H #include "includes.h" #include "common.h" -#define le16_to_cpu le_to_host16 -#define le32_to_cpu le_to_host32 - -#define get_unaligned(p) \ -({ \ - struct packed_dummy_struct { \ - typeof(*(p)) __val; \ - } __attribute__((packed)) *__ptr = (void *) (p); \ - \ - __ptr->__val; \ -}) -#define get_unaligned_le16(p) le16_to_cpu(get_unaligned((le16 *)(p))) -#define get_unaligned_le32(p) le32_to_cpu(get_unaligned((le32 *)(p))) +#define get_unaligned_le16(p) WPA_GET_LE16((void *) (p)) +#define get_unaligned_le32(p) WPA_GET_LE32((void *) (p)) #endif /* PLATFORM_H */ diff --git a/src/utils/radiotap.c b/src/utils/radiotap.c index 6dfe3053e..6dfe29818 100644 --- a/src/utils/radiotap.c +++ b/src/utils/radiotap.c @@ -111,7 +111,7 @@ int ieee80211_radiotap_iterator_init( iterator->_arg = (uint8_t *)radiotap_header + sizeof(*radiotap_header); iterator->_next_ns_data = NULL; iterator->_reset_on_ext = 0; - iterator->_next_bitmap = &radiotap_header->it_present; + iterator->_next_bitmap = (le32 *) (((u8 *) radiotap_header) + offsetof(struct ieee80211_radiotap_header, it_present)); iterator->_next_bitmap++; iterator->_vns = vns; iterator->current_namespace = &radiotap_ns; diff --git a/src/utils/radiotap.h b/src/utils/radiotap.h index 17bb6330d..488d5a3b4 100644 --- a/src/utils/radiotap.h +++ b/src/utils/radiotap.h @@ -39,7 +39,7 @@ struct ieee80211_radiotap_header { * @it_present: (first) present word */ le32 it_present; -} __packed; +} STRUCT_PACKED; /* version is always 0 */ #define PKTHDR_RADIOTAP_VERSION 0