From 4f9ba364ed5e820a1998ec2e62b6db0fbc6d6506 Mon Sep 17 00:00:00 2001 From: Bala Venkatesh Date: Mon, 4 Mar 2019 20:03:40 +0530 Subject: [PATCH] qcacld-3.0: Trim operation classes to max supported in change station Operation classes supported can be controlled by user, which can be sent greater than the max supported operations. This results in stack overflow in change station command. Add check to validate operations supported param given by user and if it exceeds max supported value, set it to max supported value. CRs-Fixed: 2002052 Change-Id: Idd3a35e38b091546a17d7ec6329f19429e5c289c --- os_if/tdls/src/wlan_cfg80211_tdls.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/os_if/tdls/src/wlan_cfg80211_tdls.c b/os_if/tdls/src/wlan_cfg80211_tdls.c index 4df29dd75c3f..a4c665fe3fd2 100644 --- a/os_if/tdls/src/wlan_cfg80211_tdls.c +++ b/os_if/tdls/src/wlan_cfg80211_tdls.c @@ -334,6 +334,13 @@ wlan_cfg80211_tdls_extract_params(struct tdls_update_peer_params *req_info, if (params->supported_channels_len) tdls_calc_channels_from_staparams(req_info, params); + if (params->supported_oper_classes_len > WLAN_MAX_SUPP_OPER_CLASSES) { + cfg80211_debug("received oper classes:%d, resetting it to max supported: %d", + params->supported_oper_classes_len, + WLAN_MAX_SUPP_OPER_CLASSES); + params->supported_oper_classes_len = WLAN_MAX_SUPP_OPER_CLASSES; + } + qdf_mem_copy(req_info->supported_oper_classes, params->supported_oper_classes, params->supported_oper_classes_len);