diff options
author | Petri Gynther <pgynther@google.com> | 2019-02-07 18:08:44 -0800 |
---|---|---|
committer | Petri Gynther <pgynther@google.com> | 2019-02-07 18:09:05 -0800 |
commit | feb49e2c479ac26259ecc36a0bfeade1d7cfe4e5 (patch) | |
tree | c256fc6c3e08f251d0b137587ecdc7661ce1ecb0 | |
parent | b167f9a6f268385e07148b09f36314595f70457f (diff) | |
parent | 3ff74583dc8d590538079f87abbcb68039d8bf54 (diff) | |
download | qcacld-android-msm-crosshatch-4.9-q-preview-1.tar.gz |
Merge -pi-qpr3 into android-msm-bluecross-4.9android-q-preview-1_r0.3android-msm-crosshatch-4.9-q-preview-1
Change-Id: I236c48059549cc39aedca6d1ac01c6045133a0de
Signed-off-by: Petri Gynther <pgynther@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 e7a40552fb..03df15028f 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -9264,6 +9264,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); @@ -9281,11 +9282,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; } |