diff options
author | Maggie White <maggiewhite@google.com> | 2019-02-06 13:10:25 -0800 |
---|---|---|
committer | Maggie White <maggiewhite@google.com> | 2019-02-06 13:10:52 -0800 |
commit | 5c2ce9306270323b34a487e6884fa9634dbb0696 (patch) | |
tree | 5dec1cec7d9340ce39c2643ebab0d933a28a1465 | |
parent | da5595079ff732c9673beaea355712d620a3bf91 (diff) | |
parent | ce16f6751fbab57982201d3c03a782bc25bac54f (diff) | |
download | qcacld-5c2ce9306270323b34a487e6884fa9634dbb0696.tar.gz |
Merge branch 'android-msm-bluecross-4.9-pi-dr1-security-next' into android-msm-bluecross-4.9-pi-dr1
APR 2019.1
Bug: 123654997
Change-Id: I392c2366ba15d58aa564637d784b74593ae766de
Signed-off-by: Maggie White <maggiewhite@google.com>
-rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 4d8051c160..0788917994 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -9254,6 +9254,7 @@ __wlan_hdd_cfg80211_avoid_freq(struct wiphy *wiphy, uint16_t unsafe_channel_index, local_unsafe_list_count; tHddAvoidFreqList *channel_list; enum tQDF_GLOBAL_CON_MODE curr_mode; + uint8_t num_args = 0; ENTER_DEV(wdev->netdev); @@ -9271,11 +9272,27 @@ __wlan_hdd_cfg80211_avoid_freq(struct wiphy *wiphy, ret = wlan_hdd_validate_context(hdd_ctx); if (0 != ret) return ret; + if (!data || data_len < (sizeof(channel_list->avoidFreqRangeCount) + + sizeof(tHddAvoidFreqRange))) { + hdd_err("Avoid frequency channel list empty"); + return -EINVAL; + } + num_args = (data_len - sizeof(channel_list->avoidFreqRangeCount)) / + sizeof(channel_list->avoidFreqRange[0].startFreq); + + if (num_args < 2 || num_args > HDD_MAX_AVOID_FREQ_RANGES * 2 || + num_args % 2 != 0) { + hdd_err("Invalid avoid frequency channel list"); + return -EINVAL; + } channel_list = (tHddAvoidFreqList *)data; - if (!channel_list) { - hdd_log(QDF_TRACE_LEVEL_ERROR, - "Avoid frequency channel list empty"); + + if (channel_list->avoidFreqRangeCount == 0 || + channel_list->avoidFreqRangeCount > HDD_MAX_AVOID_FREQ_RANGES || + 2 * channel_list->avoidFreqRangeCount != num_args) { + hdd_err("Invalid frequency range count %d", + channel_list->avoidFreqRangeCount); return -EINVAL; } |