diff options
author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2021-10-06 18:41:37 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2022-03-15 17:45:27 +0000 |
commit | 6eb932a969139b9f42f0ad130bda36f0d709e2a9 (patch) | |
tree | 12eeb82d3081fb97c45865556637ce81710b593f | |
parent | cbfb77f1953bde3c4d23bf2278e2762053d80fe9 (diff) | |
download | src-6eb932a969139b9f42f0ad130bda36f0d709e2a9.tar.gz src-6eb932a969139b9f42f0ad130bda36f0d709e2a9.zip |
net80211: proper ssid length check in setmlme_assoc_adhoc()
A user supplied SSID length is used without proper checks in
setmlme_assoc_adhoc() which can lead to copies beyond the end
of the user supplied buffer.
The ssid is a fixed size array for the ioctl and the argument
to setmlme_assoc_adhoc().
In addition to an ssid_len check of 0 also error in case the
ssid_len is larger than the size of the ssid array to prevent
problems.
PR: 254737
Reported by: Tommaso (cutesmilee.research protonmail.com)
(cherry picked from commit 526370fb85db4b659cff4625eb2f379acaa4a1a8)
(cherry picked from commit 0525ece3554edce14fa68a7fb61078ae2110c44b)
(cherry picked from commit ab5678c6c0d0b28feafdb2fd397866d6088f37d8)
Approved by: so
Security: FreeBSD-SA-22:02.wifi
-rw-r--r-- | sys/net80211/ieee80211_ioctl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index 2fef9ac0084a..419518eb1224 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -1591,7 +1591,7 @@ setmlme_assoc_adhoc(struct ieee80211vap *vap, ("expected opmode IBSS or AHDEMO not %s", ieee80211_opmode_name[vap->iv_opmode])); - if (ssid_len == 0) + if (ssid_len == 0 || ssid_len > IEEE80211_NWID_LEN) return EINVAL; sr = IEEE80211_MALLOC(sizeof(*sr), M_TEMP, |