Commit 5d4e04bf authored by Johannes Berg's avatar Johannes Berg

wifi: cfg80211: reject auth/assoc to AP with our address

If the AP uses our own address as its MLD address or BSSID, then
clearly something's wrong. Reject such connections so we don't
try and fail later.

Reported-by: syzbot+2676771ed06a6df166ad@syzkaller.appspotmail.com
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 19e4a47e
......@@ -281,6 +281,11 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
ether_addr_equal(req->bss->bssid, wdev->u.client.connected_addr))
return -EALREADY;
if (ether_addr_equal(req->bss->bssid, dev->dev_addr) ||
(req->link_id >= 0 &&
ether_addr_equal(req->ap_mld_addr, dev->dev_addr)))
return -EINVAL;
return rdev_auth(rdev, dev, req);
}
......@@ -335,6 +340,9 @@ int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
if (req->links[i].bss == req->links[j].bss)
return -EINVAL;
}
if (ether_addr_equal(req->links[i].bss->bssid, dev->dev_addr))
return -EINVAL;
}
if (wdev->connected &&
......@@ -342,6 +350,11 @@ int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
!ether_addr_equal(wdev->u.client.connected_addr, req->prev_bssid)))
return -EALREADY;
if ((req->bss && ether_addr_equal(req->bss->bssid, dev->dev_addr)) ||
(req->link_id >= 0 &&
ether_addr_equal(req->ap_mld_addr, dev->dev_addr)))
return -EINVAL;
cfg80211_oper_and_ht_capa(&req->ht_capa_mask,
rdev->wiphy.ht_capa_mod_mask);
cfg80211_oper_and_vht_capa(&req->vht_capa_mask,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment