From c6f950157c1b8a55939301b4dc81c2c55a6c03ec Mon Sep 17 00:00:00 2001 From: Mark Salyzyn <salyzyn@google.com> Date: Thu, 7 Apr 2016 09:27:01 -0700 Subject: [PATCH] net: wireless: bcmdhd: Verify SSID length (part deux) Ensure SSID length is checked unsigned maximum Signed-off-by: Mark Salyzyn <salyzyn@google.com> Bug: 26571522 Bug: 27240072 Change-Id: I6cf37634e3a21eac6a90049a2dcc2912345f77f9 --- drivers/net/wireless/bcmdhd/wl_cfg80211.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/bcmdhd/wl_cfg80211.c index 1701a2e29432..b9241816f2fa 100644 --- a/drivers/net/wireless/bcmdhd/wl_cfg80211.c +++ b/drivers/net/wireless/bcmdhd/wl_cfg80211.c @@ -2055,7 +2055,8 @@ static void wl_scan_prep(struct bcm_cfg80211 *cfg, struct wl_scan_params *params ptr = (char*)params + offset; for (i = 0; i < n_ssids; i++) { memset(&ssid, 0, sizeof(wlc_ssid_t)); - ssid.SSID_len = MIN((int)request->ssids[i].ssid_len, DOT11_MAX_SSID_LEN); + ssid.SSID_len = MIN(request->ssids[i].ssid_len, + DOT11_MAX_SSID_LEN); memcpy(ssid.SSID, request->ssids[i].ssid, ssid.SSID_len); if (!ssid.SSID_len) WL_SCAN(("%d: Broadcast scan\n", i)); @@ -7273,13 +7274,15 @@ wl_cfg80211_add_set_beacon(struct wiphy *wiphy, struct net_device *dev, if (dev_role == NL80211_IFTYPE_AP) { /* Store the hostapd SSID */ memset(&cfg->hostapd_ssid.SSID[0], 0x00, DOT11_MAX_SSID_LEN); - cfg->hostapd_ssid.SSID_len = MIN((int)ssid_ie->len, DOT11_MAX_SSID_LEN); + cfg->hostapd_ssid.SSID_len = MIN(ssid_ie->len, + DOT11_MAX_SSID_LEN); memcpy(&cfg->hostapd_ssid.SSID[0], ssid_ie->data, cfg->hostapd_ssid.SSID_len); } else { /* P2P GO */ memset(&cfg->p2p->ssid.SSID[0], 0x00, DOT11_MAX_SSID_LEN); - cfg->p2p->ssid.SSID_len = MIN((int)ssid_ie->len, DOT11_MAX_SSID_LEN); + cfg->p2p->ssid.SSID_len = MIN(ssid_ie->len, + DOT11_MAX_SSID_LEN); memcpy(cfg->p2p->ssid.SSID, ssid_ie->data, cfg->p2p->ssid.SSID_len); } @@ -11846,7 +11849,8 @@ wl_update_prof(struct bcm_cfg80211 *cfg, struct net_device *ndev, ssid = (wlc_ssid_t *) data; memset(profile->ssid.SSID, 0, sizeof(profile->ssid.SSID)); - profile->ssid.SSID_len = MIN(ssid->SSID_len, (uint32)DOT11_MAX_SSID_LEN); + profile->ssid.SSID_len = MIN(ssid->SSID_len, + DOT11_MAX_SSID_LEN); memcpy(profile->ssid.SSID, ssid->SSID, profile->ssid.SSID_len); break; case WL_PROF_BSSID: @@ -11930,7 +11934,7 @@ static __used s32 wl_add_ie(struct bcm_cfg80211 *cfg, u8 t, u8 l, u8 *v) static void wl_update_hidden_ap_ie(struct wl_bss_info *bi, u8 *ie_stream, u32 *ie_size, bool roam) { u8 *ssidie; - int32 ssid_len = MIN((int)bi->SSID_len, DOT11_MAX_SSID_LEN); + int32 ssid_len = MIN(bi->SSID_len, DOT11_MAX_SSID_LEN); int32 remaining_ie_buf_len, available_buffer_len; ssidie = (u8 *)cfg80211_find_ie(WLAN_EID_SSID, ie_stream, *ie_size); /* ERROR out if -- GitLab