qcacld-3.0: Add boundary check for setMonChan command

qcacld-2.0 to qcacld-3.0 propagation

Add channel and bandwidth validation check for
setMonChan iwpriv command.

Change-Id: I1be22799a46e3ec30cfe384563ecb8a5404d9f6a
CRs-Fixed: 2139911
This commit is contained in:
Visweswara Tanuku
2018-04-12 12:26:34 +05:30
committed by nshrivas
parent 0ac37445d5
commit 006313a221

View File

@@ -5846,6 +5846,32 @@ int wlan_hdd_set_mon_chan(struct hdd_adapter *adapter, uint32_t chan,
return -EINVAL;
}
/* Validate Channel */
if (!WLAN_REG_IS_24GHZ_CH(chan) && !WLAN_REG_IS_5GHZ_CH(chan)) {
hdd_err("Channel %d Not supported", chan);
return -EINVAL;
}
if (WLAN_REG_IS_24GHZ_CH(chan)) {
if (bandwidth == CH_WIDTH_80MHZ) {
hdd_err("BW80 not possible in 2.4GHz band");
return -EINVAL;
}
if ((bandwidth != CH_WIDTH_20MHZ) && (chan == 14) &&
(bandwidth != CH_WIDTH_MAX)) {
hdd_err("Only BW20 possible on channel 14");
return -EINVAL;
}
}
if (WLAN_REG_IS_5GHZ_CH(chan)) {
if ((bandwidth != CH_WIDTH_20MHZ) && (chan == 165) &&
(bandwidth != CH_WIDTH_MAX)) {
hdd_err("Only BW20 possible on channel 165");
return -EINVAL;
}
}
hdd_debug("Set monitor mode Channel %d", chan);
qdf_mem_zero(&roam_profile, sizeof(roam_profile));
roam_profile.ChannelInfo.ChannelList = &ch_info->channel;