Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c926d006 authored by Tim Harvey's avatar Tim Harvey Committed by John W. Linville
Browse files

mac80211: Fix NULL-pointer deference on ibss merge when not ready



dev_open will eventually call ieee80211_ibss_join which sets up the
skb used for beacons/probe-responses however it is possible to
receive beacons that attempt to merge before this occurs causing
a null pointer dereference.  Check ssid_len as that is the last
thing set in ieee80211_ibss_join.

This occurs quite easily in the presence of adhoc nodes with hidden SSID's

revised previous patch to check further up based on irc feedback

Signed-off-by: default avatarTim Harvey <harvey.tim@gmail.com>
Reviewed-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4a55d585
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -780,6 +780,9 @@ void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,


	mutex_lock(&sdata->u.ibss.mtx);
	mutex_lock(&sdata->u.ibss.mtx);


	if (!sdata->u.ibss.ssid_len)
		goto mgmt_out; /* not ready to merge yet */

	switch (fc & IEEE80211_FCTL_STYPE) {
	switch (fc & IEEE80211_FCTL_STYPE) {
	case IEEE80211_STYPE_PROBE_REQ:
	case IEEE80211_STYPE_PROBE_REQ:
		ieee80211_rx_mgmt_probe_req(sdata, mgmt, skb->len);
		ieee80211_rx_mgmt_probe_req(sdata, mgmt, skb->len);
@@ -797,6 +800,7 @@ void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
		break;
		break;
	}
	}


 mgmt_out:
	mutex_unlock(&sdata->u.ibss.mtx);
	mutex_unlock(&sdata->u.ibss.mtx);
}
}