summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2024-05-31 06:20:10 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-07-25 09:49:13 +0200
commit001120ff0c9e3557dee9b5ee0d358e0fc189996f (patch)
tree9977377a02cd454eff85136f2514d1eb3bc75c54 /net
parent30d35b24b7957922f81cfdaa66f2e1b1e9b9aed2 (diff)
downloadlinux-001120ff0c9e3557dee9b5ee0d358e0fc189996f.tar.gz
linux-001120ff0c9e3557dee9b5ee0d358e0fc189996f.tar.bz2
linux-001120ff0c9e3557dee9b5ee0d358e0fc189996f.zip
wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
[ Upstream commit 6ef09cdc5ba0f93826c09d810c141a8d103a80fc ] In 'cfg80211_wext_siwscan()', add extra check whether number of channels passed via 'ioctl(sock, SIOCSIWSCAN, ...)' doesn't exceed IW_MAX_FREQUENCIES and reject invalid request with -EINVAL otherwise. Reported-by: syzbot+253cd2d2491df77c93ac@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=253cd2d2491df77c93ac Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Link: https://msgid.link/20240531032010.451295-1-dmantipov@yandex.ru Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net')
-rw-r--r--net/wireless/scan.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index ee4ef32f39b3..af1d6f628c10 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -2719,10 +2719,14 @@ int cfg80211_wext_siwscan(struct net_device *dev,
wiphy = &rdev->wiphy;
/* Determine number of channels, needed to allocate creq */
- if (wreq && wreq->num_channels)
+ if (wreq && wreq->num_channels) {
+ /* Passed from userspace so should be checked */
+ if (unlikely(wreq->num_channels > IW_MAX_FREQUENCIES))
+ return -EINVAL;
n_channels = wreq->num_channels;
- else
+ } else {
n_channels = ieee80211_get_num_supported_channels(wiphy);
+ }
creq = kzalloc(sizeof(*creq) + sizeof(struct cfg80211_ssid) +
n_channels * sizeof(void *),