From bef70275f7ef1fdadc00bbbce1cbf72c2139ea03 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 13 Nov 2023 16:43:39 -0600 Subject: [PATCH] netdev: Fix obtaining reason code from deauth frames The reason code from deauthentication frame was being obtained as a uint8_t instead of a uint16_t. The value was only ever used in an informational statement. Since the value was in little endian, only the first 8 bits of the reason code were obtained. Fix that. Fixes: 2bebb4bdc7ee ("netdev: Handle deauth frames prior to association") --- src/netdev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/netdev.c b/src/netdev.c index 86712658..49854b16 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -1264,6 +1264,7 @@ static void netdev_deauthenticate_event(struct l_genl_msg *msg, uint16_t type, len; const void *data; const struct mmpdu_header *hdr = NULL; + const struct mmpdu_deauthentication *deauth; uint16_t reason_code; l_debug(""); @@ -1298,7 +1299,8 @@ static void netdev_deauthenticate_event(struct l_genl_msg *msg, if (!memcmp(hdr->address_2, netdev->addr, sizeof(netdev->addr))) return; - reason_code = l_get_u8(mmpdu_body(hdr)); + deauth = mmpdu_body(hdr); + reason_code = L_LE16_TO_CPU(deauth->reason_code); l_info("deauth event, src="MAC" dest="MAC" bssid="MAC" reason=%u", MAC_STR(hdr->address_2), MAC_STR(hdr->address_1),