Commit c478ac9d authored by Alexei Avshalom Lazar's avatar Alexei Avshalom Lazar Committed by Kalle Valo

wil6210: update cid boundary check of wil_find_cid/_by_idx()

The return value of wil_find_cid()/wil_find_cid_by_idx() is
validated with the lower boundary value.
Check the upper boundary value as well.
Signed-off-by: default avatarAlexei Avshalom Lazar <ailizaro@codeaurora.org>
Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent f2b6b46e
...@@ -380,8 +380,8 @@ static int wil_cfg80211_get_station(struct wiphy *wiphy, ...@@ -380,8 +380,8 @@ static int wil_cfg80211_get_station(struct wiphy *wiphy,
wil_dbg_misc(wil, "get_station: %pM CID %d MID %d\n", mac, cid, wil_dbg_misc(wil, "get_station: %pM CID %d MID %d\n", mac, cid,
vif->mid); vif->mid);
if (cid < 0) if (!wil_cid_valid(wil, cid))
return cid; return -ENOENT;
rc = wil_cid_fill_sinfo(vif, cid, sinfo); rc = wil_cid_fill_sinfo(vif, cid, sinfo);
...@@ -417,7 +417,7 @@ static int wil_cfg80211_dump_station(struct wiphy *wiphy, ...@@ -417,7 +417,7 @@ static int wil_cfg80211_dump_station(struct wiphy *wiphy,
int rc; int rc;
int cid = wil_find_cid_by_idx(wil, vif->mid, idx); int cid = wil_find_cid_by_idx(wil, vif->mid, idx);
if (cid < 0) if (!wil_cid_valid(wil, cid))
return -ENOENT; return -ENOENT;
ether_addr_copy(mac, wil->sta[cid].addr); ether_addr_copy(mac, wil->sta[cid].addr);
......
...@@ -340,7 +340,7 @@ static void _wil6210_disconnect_complete(struct wil6210_vif *vif, ...@@ -340,7 +340,7 @@ static void _wil6210_disconnect_complete(struct wil6210_vif *vif,
wil_dbg_misc(wil, wil_dbg_misc(wil,
"Disconnect complete %pM, CID=%d, reason=%d\n", "Disconnect complete %pM, CID=%d, reason=%d\n",
bssid, cid, reason_code); bssid, cid, reason_code);
if (cid >= 0) /* disconnect 1 peer */ if (wil_cid_valid(wil, cid)) /* disconnect 1 peer */
wil_disconnect_cid_complete(vif, cid, reason_code); wil_disconnect_cid_complete(vif, cid, reason_code);
} else { /* all */ } else { /* all */
wil_dbg_misc(wil, "Disconnect complete all\n"); wil_dbg_misc(wil, "Disconnect complete all\n");
...@@ -452,7 +452,7 @@ static void _wil6210_disconnect(struct wil6210_vif *vif, const u8 *bssid, ...@@ -452,7 +452,7 @@ static void _wil6210_disconnect(struct wil6210_vif *vif, const u8 *bssid,
cid = wil_find_cid(wil, vif->mid, bssid); cid = wil_find_cid(wil, vif->mid, bssid);
wil_dbg_misc(wil, "Disconnect %pM, CID=%d, reason=%d\n", wil_dbg_misc(wil, "Disconnect %pM, CID=%d, reason=%d\n",
bssid, cid, reason_code); bssid, cid, reason_code);
if (cid >= 0) /* disconnect 1 peer */ if (wil_cid_valid(wil, cid)) /* disconnect 1 peer */
wil_disconnect_cid(vif, cid, reason_code); wil_disconnect_cid(vif, cid, reason_code);
} else { /* all */ } else { /* all */
wil_dbg_misc(wil, "Disconnect all\n"); wil_dbg_misc(wil, "Disconnect all\n");
......
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