Skip to content

Commit 968a503

Browse files
drivers: wifi: siwx91x: Fix buffer overflow in client disconnect
Copy only WIFI_MAC_ADDR_LEN bytes to sta_info.mac instead of dynamic length Signed-off-by: Muzaffar Ahmed <[email protected]>
1 parent 6f62ca6 commit 968a503

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

drivers/wifi/siwx91x/siwx91x_wifi.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -885,14 +885,15 @@ static sl_status_t siwx91x_on_ap_sta_connect(sl_wifi_event_t event, void *data,
885885
uint32_t data_length, void *arg)
886886
{
887887
ARG_UNUSED(event);
888+
ARG_UNUSED(data_length);
888889
struct siwx91x_dev *sidev = arg;
889890
struct wifi_ap_sta_info sta_info = { };
890891

891892
__ASSERT(data, "data cannot be NULL");
892893
__ASSERT(arg, "arg cannot be NULL");
893894

894-
memcpy(sta_info.mac, data, data_length);
895-
sta_info.mac_length = data_length;
895+
memcpy(sta_info.mac, data, WIFI_MAC_ADDR_LEN);
896+
sta_info.mac_length = WIFI_MAC_ADDR_LEN;
896897
sta_info.link_mode = WIFI_LINK_MODE_UNKNOWN;
897898

898899
wifi_mgmt_raise_ap_sta_connected_event(sidev->iface, &sta_info);
@@ -904,14 +905,15 @@ static sl_status_t siwx91x_on_ap_sta_disconnect(sl_wifi_event_t event, void *dat
904905
uint32_t data_length, void *arg)
905906
{
906907
ARG_UNUSED(event);
908+
ARG_UNUSED(data_length);
907909
struct siwx91x_dev *sidev = arg;
908910
struct wifi_ap_sta_info sta_info = { };
909911

910912
__ASSERT(data, "data cannot be NULL");
911913
__ASSERT(arg, "arg cannot be NULL");
912914

913-
memcpy(sta_info.mac, data, data_length);
914-
sta_info.mac_length = data_length;
915+
memcpy(sta_info.mac, data, WIFI_MAC_ADDR_LEN);
916+
sta_info.mac_length = WIFI_MAC_ADDR_LEN;
915917
wifi_mgmt_raise_ap_sta_disconnected_event(sidev->iface, &sta_info);
916918

917919
return SL_STATUS_OK;

0 commit comments

Comments
 (0)