From a56dc1e5b083844b0d86a6288898642baff620aa Mon Sep 17 00:00:00 2001 From: SaidiReddy Yenuga Date: Tue, 21 Feb 2017 13:05:26 +0530 Subject: [PATCH] qcacld-3.0: Trim operation classes to max supported in change station qcacld-2.0 to qcacld-3.0 Propagation. 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 --- core/hdd/src/wlan_hdd_cfg80211.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index b18c47a832b0..a775910a985f 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -12602,6 +12602,14 @@ static int __wlan_hdd_change_station(struct wiphy *wiphy, hdd_debug("After removing duplcates StaParams.supported_channels_len: %d", StaParams.supported_channels_len); } + if (params->supported_oper_classes_len > + CDS_MAX_SUPP_OPER_CLASSES) { + hdd_notice("received oper classes:%d, resetting it to max supported: %d", + params->supported_oper_classes_len, + CDS_MAX_SUPP_OPER_CLASSES); + params->supported_oper_classes_len = + CDS_MAX_SUPP_OPER_CLASSES; + } qdf_mem_copy(StaParams.supported_oper_classes, params->supported_oper_classes, params->supported_oper_classes_len);