diff options
author | Jeff <jeff.a.longo@gmail.com> | 2022-10-01 20:26:39 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-02 04:26:39 +0100 |
commit | e750915c8728234adc07260a399cbcbe99f797c0 (patch) | |
tree | ab9af9017f3e255cb276f55edb250bd39c23835e /src | |
parent | 9f6dca87a43b9e27a0f4186d8a57cf7be1f0a358 (diff) | |
download | libwifi-e750915c8728234adc07260a399cbcbe99f797c0.tar.gz libwifi-e750915c8728234adc07260a399cbcbe99f797c0.tar.bz2 libwifi-e750915c8728234adc07260a399cbcbe99f797c0.zip |
gen: Fix boundary alignment in Radiotap header
Diffstat (limited to 'src')
-rw-r--r-- | src/libwifi/gen/misc/radiotap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libwifi/gen/misc/radiotap.c b/src/libwifi/gen/misc/radiotap.c index cc02097..366ee8c 100644 --- a/src/libwifi/gen/misc/radiotap.c +++ b/src/libwifi/gen/misc/radiotap.c | |||
@@ -36,6 +36,11 @@ size_t libwifi_create_radiotap(struct libwifi_radiotap_info *info, char *radiota | |||
36 | uint32_t presence_bit = rtap_hdr.it_present; | 36 | uint32_t presence_bit = rtap_hdr.it_present; |
37 | for (int field = 0; field < radiotap_ns.n_bits; field++) { | 37 | for (int field = 0; field < radiotap_ns.n_bits; field++) { |
38 | if (presence_bit & 1) { | 38 | if (presence_bit & 1) { |
39 | uint8_t padding = offset % radiotap_ns.align_size[field].align; | ||
40 | if (padding > 0) { | ||
41 | memset(rtap_data + offset, 0, padding); | ||
42 | offset += padding; | ||
43 | } | ||
39 | switch (field) { | 44 | switch (field) { |
40 | case IEEE80211_RADIOTAP_CHANNEL: | 45 | case IEEE80211_RADIOTAP_CHANNEL: |
41 | memcpy(rtap_data + offset, &info->channel.freq, sizeof(info->channel.freq)); | 46 | memcpy(rtap_data + offset, &info->channel.freq, sizeof(info->channel.freq)); |