All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer.
@ 2020-12-08 11:24 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-12-08 11:24 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 23296 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Denis Straghkov <d.straghkov@ispras.ru>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: Dan Carpenter <error27@gmail.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   cd796ed3345030aa1bb332fe5c793b3dddaf56e7
commit: 370730894bece52b2bbd4eb727fbb39840cc0e14 Staging: rtl8723bs: rtw_wlan_util: Add size check of SSID IE
date:   8 months ago
:::::: branch date: 16 hours ago
:::::: commit date: 8 months ago
compiler: or1k-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer. [nullPointerArithmeticRedundantCheck]
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1375:6: note: Assuming that condition 'p' is not redundant
    if (p) {
        ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: note: Null pointer addition
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
>> drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:201:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen);
     ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:816:4: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
      pframe += ssid_ielen_diff;
      ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:706:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, bssrate_len, bssrate, &pktlen);
     ^
>> drivers/staging/rtl8723bs/os_dep/ioctl_linux.c:2930:23: warning: Expression '(X & 0x3) > 0x3' is always false. [comparisonError]
          if ((extra_arg & 0x03) > 0x03)
                         ^

vim +/p +1380 drivers/staging/rtl8723bs/core/rtw_wlan_util.c

554c0a3abf216c Hans de Goede       2017-03-29  1259  
554c0a3abf216c Hans de Goede       2017-03-29  1260  int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
554c0a3abf216c Hans de Goede       2017-03-29  1261  {
554c0a3abf216c Hans de Goede       2017-03-29  1262  	unsigned int		len;
554c0a3abf216c Hans de Goede       2017-03-29  1263  	unsigned char 	*p;
554c0a3abf216c Hans de Goede       2017-03-29  1264  	unsigned short	val16, subtype;
554c0a3abf216c Hans de Goede       2017-03-29  1265  	struct wlan_network *cur_network = &(Adapter->mlmepriv.cur_network);
554c0a3abf216c Hans de Goede       2017-03-29  1266  	/* u8 wpa_ie[255], rsn_ie[255]; */
554c0a3abf216c Hans de Goede       2017-03-29  1267  	u16 wpa_len = 0, rsn_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1268  	u8 encryp_protocol = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1269  	struct wlan_bssid_ex *bssid;
554c0a3abf216c Hans de Goede       2017-03-29  1270  	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1271  	unsigned char *pbuf;
554c0a3abf216c Hans de Goede       2017-03-29  1272  	u32 wpa_ielen = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1273  	u8 *pbssid = GetAddr3Ptr(pframe);
554c0a3abf216c Hans de Goede       2017-03-29  1274  	struct HT_info_element *pht_info = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1275  	struct rtw_ieee80211_ht_cap *pht_cap = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1276  	u32 bcn_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1277  	unsigned short	ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1278  	unsigned char ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1279  	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
370730894bece5 Denis Straghkov     2020-04-22  1280  	int ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1281  
554c0a3abf216c Hans de Goede       2017-03-29  1282  	if (is_client_associated_to_ap(Adapter) == false)
554c0a3abf216c Hans de Goede       2017-03-29  1283  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1284  
554c0a3abf216c Hans de Goede       2017-03-29  1285  	len = packet_len - sizeof(struct ieee80211_hdr_3addr);
554c0a3abf216c Hans de Goede       2017-03-29  1286  
554c0a3abf216c Hans de Goede       2017-03-29  1287  	if (len > MAX_IE_SZ) {
554c0a3abf216c Hans de Goede       2017-03-29  1288  		DBG_871X("%s IE too long for survey event\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1289  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1290  	}
554c0a3abf216c Hans de Goede       2017-03-29  1291  
554c0a3abf216c Hans de Goede       2017-03-29  1292  	if (memcmp(cur_network->network.MacAddress, pbssid, 6)) {
554c0a3abf216c Hans de Goede       2017-03-29  1293  		DBG_871X("Oops: rtw_check_network_encrypt linked but recv other bssid bcn\n" MAC_FMT MAC_FMT,
554c0a3abf216c Hans de Goede       2017-03-29  1294  				MAC_ARG(pbssid), MAC_ARG(cur_network->network.MacAddress));
554c0a3abf216c Hans de Goede       2017-03-29  1295  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1296  	}
554c0a3abf216c Hans de Goede       2017-03-29  1297  
2ef2b7c21fc877 Joe Perches         2017-09-09  1298  	bssid = rtw_zmalloc(sizeof(struct wlan_bssid_ex));
c9d19e68a7963f Michael Straube     2018-07-11  1299  	if (!bssid) {
554c0a3abf216c Hans de Goede       2017-03-29  1300  		DBG_871X("%s rtw_zmalloc fail !!!\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1301  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1302  	}
554c0a3abf216c Hans de Goede       2017-03-29  1303  
554c0a3abf216c Hans de Goede       2017-03-29  1304  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)) {
554c0a3abf216c Hans de Goede       2017-03-29  1305  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1306  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1307  	}
554c0a3abf216c Hans de Goede       2017-03-29  1308  
554c0a3abf216c Hans de Goede       2017-03-29  1309  	subtype = GetFrameSubType(pframe) >> 4;
554c0a3abf216c Hans de Goede       2017-03-29  1310  
554c0a3abf216c Hans de Goede       2017-03-29  1311  	if (subtype == WIFI_BEACON)
554c0a3abf216c Hans de Goede       2017-03-29  1312  		bssid->Reserved[0] = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1313  
554c0a3abf216c Hans de Goede       2017-03-29  1314  	bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
554c0a3abf216c Hans de Goede       2017-03-29  1315  
554c0a3abf216c Hans de Goede       2017-03-29  1316  	/* below is to copy the information element */
554c0a3abf216c Hans de Goede       2017-03-29  1317  	bssid->IELength = len;
554c0a3abf216c Hans de Goede       2017-03-29  1318  	memcpy(bssid->IEs, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->IELength);
554c0a3abf216c Hans de Goede       2017-03-29  1319  
554c0a3abf216c Hans de Goede       2017-03-29  1320  	/* check bw and channel offset */
554c0a3abf216c Hans de Goede       2017-03-29  1321  	/* parsing HT_CAP_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1322  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1323  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1324  			pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1325  			ht_cap_info = le16_to_cpu(pht_cap->cap_info);
554c0a3abf216c Hans de Goede       2017-03-29  1326  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1327  			ht_cap_info = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1328  	}
554c0a3abf216c Hans de Goede       2017-03-29  1329  	/* parsing HT_INFO_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1330  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1331  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1332  			pht_info = (struct HT_info_element *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1333  			ht_info_infos_0 = pht_info->infos[0];
554c0a3abf216c Hans de Goede       2017-03-29  1334  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1335  			ht_info_infos_0 = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1336  	}
554c0a3abf216c Hans de Goede       2017-03-29  1337  	if (ht_cap_info != cur_network->BcnInfo.ht_cap_info ||
554c0a3abf216c Hans de Goede       2017-03-29  1338  		((ht_info_infos_0&0x03) != (cur_network->BcnInfo.ht_info_infos_0&0x03))) {
554c0a3abf216c Hans de Goede       2017-03-29  1339  			DBG_871X("%s bcn now: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1340  							ht_cap_info, ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1341  			DBG_871X("%s bcn link: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1342  							cur_network->BcnInfo.ht_cap_info, cur_network->BcnInfo.ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1343  			DBG_871X("%s bw mode change\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1344  			{
554c0a3abf216c Hans de Goede       2017-03-29  1345  				/* bcn_info_update */
554c0a3abf216c Hans de Goede       2017-03-29  1346  				cur_network->BcnInfo.ht_cap_info = ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1347  				cur_network->BcnInfo.ht_info_infos_0 = ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1348  				/* to do : need to check that whether modify related register of BB or not */
554c0a3abf216c Hans de Goede       2017-03-29  1349  			}
554c0a3abf216c Hans de Goede       2017-03-29  1350  			/* goto _mismatch; */
554c0a3abf216c Hans de Goede       2017-03-29  1351  	}
554c0a3abf216c Hans de Goede       2017-03-29  1352  
554c0a3abf216c Hans de Goede       2017-03-29  1353  	/* Checking for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1354  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _DSSET_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1355  	if (p) {
554c0a3abf216c Hans de Goede       2017-03-29  1356  			bcn_channel = *(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1357  	} else {/* In 5G, some ap do not have DSSET IE checking HT info for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1358  			rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1359  			if (pht_info) {
554c0a3abf216c Hans de Goede       2017-03-29  1360  					bcn_channel = pht_info->primary_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1361  			} else { /* we don't find channel IE, so don't check it */
554c0a3abf216c Hans de Goede       2017-03-29  1362  					/* DBG_871X("Oops: %s we don't find channel IE, so don't check it\n", __func__); */
554c0a3abf216c Hans de Goede       2017-03-29  1363  					bcn_channel = Adapter->mlmeextpriv.cur_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1364  			}
554c0a3abf216c Hans de Goede       2017-03-29  1365  	}
554c0a3abf216c Hans de Goede       2017-03-29  1366  	if (bcn_channel != Adapter->mlmeextpriv.cur_channel) {
554c0a3abf216c Hans de Goede       2017-03-29  1367  			DBG_871X("%s beacon channel:%d cur channel:%d disconnect\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1368  						   bcn_channel, Adapter->mlmeextpriv.cur_channel);
554c0a3abf216c Hans de Goede       2017-03-29  1369  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1370  	}
554c0a3abf216c Hans de Goede       2017-03-29  1371  
554c0a3abf216c Hans de Goede       2017-03-29  1372  	/* checking SSID */
370730894bece5 Denis Straghkov     2020-04-22  1373  	ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1374  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _SSID_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
370730894bece5 Denis Straghkov     2020-04-22  1375  	if (p) {
370730894bece5 Denis Straghkov     2020-04-22  1376  		ssid_len = *(p + 1);
370730894bece5 Denis Straghkov     2020-04-22  1377  		if (ssid_len > NDIS_802_11_LENGTH_SSID)
370730894bece5 Denis Straghkov     2020-04-22  1378  			ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1379  	}
370730894bece5 Denis Straghkov     2020-04-22 @1380  	memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
370730894bece5 Denis Straghkov     2020-04-22  1381  	bssid->Ssid.SsidLength = ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1382  
554c0a3abf216c Hans de Goede       2017-03-29  1383  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("%s bssid.Ssid.Ssid:%s bssid.Ssid.SsidLength:%d "
554c0a3abf216c Hans de Goede       2017-03-29  1384  				"cur_network->network.Ssid.Ssid:%s len:%d\n", __func__, bssid->Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1385  				bssid->Ssid.SsidLength, cur_network->network.Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1386  				cur_network->network.Ssid.SsidLength));
554c0a3abf216c Hans de Goede       2017-03-29  1387  
554c0a3abf216c Hans de Goede       2017-03-29  1388  	if (memcmp(bssid->Ssid.Ssid, cur_network->network.Ssid.Ssid, 32) ||
554c0a3abf216c Hans de Goede       2017-03-29  1389  			bssid->Ssid.SsidLength != cur_network->network.Ssid.SsidLength) {
554c0a3abf216c Hans de Goede       2017-03-29  1390  		if (bssid->Ssid.Ssid[0] != '\0' && bssid->Ssid.SsidLength != 0) { /* not hidden ssid */
554c0a3abf216c Hans de Goede       2017-03-29  1391  			DBG_871X("%s(), SSID is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1392  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1393  		}
554c0a3abf216c Hans de Goede       2017-03-29  1394  	}
554c0a3abf216c Hans de Goede       2017-03-29  1395  
554c0a3abf216c Hans de Goede       2017-03-29  1396  	/* check encryption info */
554c0a3abf216c Hans de Goede       2017-03-29  1397  	val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1398  
554c0a3abf216c Hans de Goede       2017-03-29  1399  	if (val16 & BIT(4))
554c0a3abf216c Hans de Goede       2017-03-29  1400  		bssid->Privacy = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1401  	else
554c0a3abf216c Hans de Goede       2017-03-29  1402  		bssid->Privacy = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1403  
554c0a3abf216c Hans de Goede       2017-03-29  1404  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1405  			("%s(): cur_network->network.Privacy is %d, bssid.Privacy is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1406  			 __func__, cur_network->network.Privacy, bssid->Privacy));
554c0a3abf216c Hans de Goede       2017-03-29  1407  	if (cur_network->network.Privacy != bssid->Privacy) {
554c0a3abf216c Hans de Goede       2017-03-29  1408  		DBG_871X("%s(), privacy is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1409  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1410  	}
554c0a3abf216c Hans de Goede       2017-03-29  1411  
554c0a3abf216c Hans de Goede       2017-03-29  1412  	rtw_get_sec_ie(bssid->IEs, bssid->IELength, NULL, &rsn_len, NULL, &wpa_len);
554c0a3abf216c Hans de Goede       2017-03-29  1413  
554c0a3abf216c Hans de Goede       2017-03-29  1414  	if (rsn_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1415  		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
554c0a3abf216c Hans de Goede       2017-03-29  1416  	} else if (wpa_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1417  		encryp_protocol = ENCRYP_PROTOCOL_WPA;
554c0a3abf216c Hans de Goede       2017-03-29  1418  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1419  		if (bssid->Privacy)
554c0a3abf216c Hans de Goede       2017-03-29  1420  			encryp_protocol = ENCRYP_PROTOCOL_WEP;
554c0a3abf216c Hans de Goede       2017-03-29  1421  	}
554c0a3abf216c Hans de Goede       2017-03-29  1422  
554c0a3abf216c Hans de Goede       2017-03-29  1423  	if (cur_network->BcnInfo.encryp_protocol != encryp_protocol) {
554c0a3abf216c Hans de Goede       2017-03-29  1424  		DBG_871X("%s(): enctyp is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1425  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1426  	}
554c0a3abf216c Hans de Goede       2017-03-29  1427  
554c0a3abf216c Hans de Goede       2017-03-29  1428  	if (encryp_protocol == ENCRYP_PROTOCOL_WPA || encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
554c0a3abf216c Hans de Goede       2017-03-29  1429  		pbuf = rtw_get_wpa_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1430  		if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1431  			if (_SUCCESS == rtw_parse_wpa_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1432  				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1433  						("%s pnetwork->pairwise_cipher: %d, group_cipher is %d, is_8021x is %d\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1434  						 pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1435  			}
554c0a3abf216c Hans de Goede       2017-03-29  1436  		} else {
554c0a3abf216c Hans de Goede       2017-03-29  1437  			pbuf = rtw_get_wpa2_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1438  
554c0a3abf216c Hans de Goede       2017-03-29  1439  			if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1440  				if (_SUCCESS == rtw_parse_wpa2_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1441  					RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1442  							("%s pnetwork->pairwise_cipher: %d, pnetwork->group_cipher is %d, is_802x is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1443  							 __func__, pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1444  				}
554c0a3abf216c Hans de Goede       2017-03-29  1445  			}
554c0a3abf216c Hans de Goede       2017-03-29  1446  		}
554c0a3abf216c Hans de Goede       2017-03-29  1447  
554c0a3abf216c Hans de Goede       2017-03-29  1448  		RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
554c0a3abf216c Hans de Goede       2017-03-29  1449  				("%s cur_network->group_cipher is %d: %d\n", __func__, cur_network->BcnInfo.group_cipher, group_cipher));
554c0a3abf216c Hans de Goede       2017-03-29  1450  		if (pairwise_cipher != cur_network->BcnInfo.pairwise_cipher || group_cipher != cur_network->BcnInfo.group_cipher) {
554c0a3abf216c Hans de Goede       2017-03-29  1451  			DBG_871X("%s pairwise_cipher(%x:%x) or group_cipher(%x:%x) is not match\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1452  					pairwise_cipher, cur_network->BcnInfo.pairwise_cipher,
554c0a3abf216c Hans de Goede       2017-03-29  1453  					group_cipher, cur_network->BcnInfo.group_cipher);
554c0a3abf216c Hans de Goede       2017-03-29  1454  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1455  		}
554c0a3abf216c Hans de Goede       2017-03-29  1456  
554c0a3abf216c Hans de Goede       2017-03-29  1457  		if (is_8021x != cur_network->BcnInfo.is_8021x) {
554c0a3abf216c Hans de Goede       2017-03-29  1458  			DBG_871X("%s authentication is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1459  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1460  		}
554c0a3abf216c Hans de Goede       2017-03-29  1461  	}
554c0a3abf216c Hans de Goede       2017-03-29  1462  
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1463  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1464  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1465  
554c0a3abf216c Hans de Goede       2017-03-29  1466  _mismatch:
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1467  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1468  
554c0a3abf216c Hans de Goede       2017-03-29  1469  	if (pmlmepriv->NumOfBcnInfoChkFail == 0)
554c0a3abf216c Hans de Goede       2017-03-29  1470  		pmlmepriv->timeBcnInfoChkStart = jiffies;
554c0a3abf216c Hans de Goede       2017-03-29  1471  
554c0a3abf216c Hans de Goede       2017-03-29  1472  	pmlmepriv->NumOfBcnInfoChkFail++;
554c0a3abf216c Hans de Goede       2017-03-29  1473  	DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d (SeqNum of this Beacon frame = %d).\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail, GetSequence(pframe));
554c0a3abf216c Hans de Goede       2017-03-29  1474  
554c0a3abf216c Hans de Goede       2017-03-29  1475  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)
554c0a3abf216c Hans de Goede       2017-03-29  1476  		&& (pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD)) {
554c0a3abf216c Hans de Goede       2017-03-29  1477  		DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d >= threshold : %d (in %d ms), return FAIL.\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail,
554c0a3abf216c Hans de Goede       2017-03-29  1478  			DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD, jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart));
554c0a3abf216c Hans de Goede       2017-03-29  1479  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1480  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1481  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1482  	}
554c0a3abf216c Hans de Goede       2017-03-29  1483  
554c0a3abf216c Hans de Goede       2017-03-29  1484  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1485  }
554c0a3abf216c Hans de Goede       2017-03-29  1486  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer.
@ 2020-12-09  1:14 ` kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-12-09  1:14 UTC (permalink / raw)
  To: Denis Straghkov
  Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman, Dan Carpenter

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   cd796ed3345030aa1bb332fe5c793b3dddaf56e7
commit: 370730894bece52b2bbd4eb727fbb39840cc0e14 Staging: rtl8723bs: rtw_wlan_util: Add size check of SSID IE
compiler: or1k-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <rong.a.chen@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer. [nullPointerArithmeticRedundantCheck]
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1375:6: note: Assuming that condition 'p' is not redundant
    if (p) {
        ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: note: Null pointer addition
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
>> drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:201:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen);
     ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:816:4: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
      pframe += ssid_ielen_diff;
      ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:706:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, bssrate_len, bssrate, &pktlen);
     ^
>> drivers/staging/rtl8723bs/os_dep/ioctl_linux.c:2930:23: warning: Expression '(X & 0x3) > 0x3' is always false. [comparisonError]
          if ((extra_arg & 0x03) > 0x03)
                         ^

vim +/p +1380 drivers/staging/rtl8723bs/core/rtw_wlan_util.c

554c0a3abf216c Hans de Goede       2017-03-29  1259  
554c0a3abf216c Hans de Goede       2017-03-29  1260  int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
554c0a3abf216c Hans de Goede       2017-03-29  1261  {
554c0a3abf216c Hans de Goede       2017-03-29  1262  	unsigned int		len;
554c0a3abf216c Hans de Goede       2017-03-29  1263  	unsigned char 	*p;
554c0a3abf216c Hans de Goede       2017-03-29  1264  	unsigned short	val16, subtype;
554c0a3abf216c Hans de Goede       2017-03-29  1265  	struct wlan_network *cur_network = &(Adapter->mlmepriv.cur_network);
554c0a3abf216c Hans de Goede       2017-03-29  1266  	/* u8 wpa_ie[255], rsn_ie[255]; */
554c0a3abf216c Hans de Goede       2017-03-29  1267  	u16 wpa_len = 0, rsn_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1268  	u8 encryp_protocol = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1269  	struct wlan_bssid_ex *bssid;
554c0a3abf216c Hans de Goede       2017-03-29  1270  	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1271  	unsigned char *pbuf;
554c0a3abf216c Hans de Goede       2017-03-29  1272  	u32 wpa_ielen = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1273  	u8 *pbssid = GetAddr3Ptr(pframe);
554c0a3abf216c Hans de Goede       2017-03-29  1274  	struct HT_info_element *pht_info = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1275  	struct rtw_ieee80211_ht_cap *pht_cap = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1276  	u32 bcn_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1277  	unsigned short	ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1278  	unsigned char ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1279  	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
370730894bece5 Denis Straghkov     2020-04-22  1280  	int ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1281  
554c0a3abf216c Hans de Goede       2017-03-29  1282  	if (is_client_associated_to_ap(Adapter) == false)
554c0a3abf216c Hans de Goede       2017-03-29  1283  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1284  
554c0a3abf216c Hans de Goede       2017-03-29  1285  	len = packet_len - sizeof(struct ieee80211_hdr_3addr);
554c0a3abf216c Hans de Goede       2017-03-29  1286  
554c0a3abf216c Hans de Goede       2017-03-29  1287  	if (len > MAX_IE_SZ) {
554c0a3abf216c Hans de Goede       2017-03-29  1288  		DBG_871X("%s IE too long for survey event\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1289  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1290  	}
554c0a3abf216c Hans de Goede       2017-03-29  1291  
554c0a3abf216c Hans de Goede       2017-03-29  1292  	if (memcmp(cur_network->network.MacAddress, pbssid, 6)) {
554c0a3abf216c Hans de Goede       2017-03-29  1293  		DBG_871X("Oops: rtw_check_network_encrypt linked but recv other bssid bcn\n" MAC_FMT MAC_FMT,
554c0a3abf216c Hans de Goede       2017-03-29  1294  				MAC_ARG(pbssid), MAC_ARG(cur_network->network.MacAddress));
554c0a3abf216c Hans de Goede       2017-03-29  1295  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1296  	}
554c0a3abf216c Hans de Goede       2017-03-29  1297  
2ef2b7c21fc877 Joe Perches         2017-09-09  1298  	bssid = rtw_zmalloc(sizeof(struct wlan_bssid_ex));
c9d19e68a7963f Michael Straube     2018-07-11  1299  	if (!bssid) {
554c0a3abf216c Hans de Goede       2017-03-29  1300  		DBG_871X("%s rtw_zmalloc fail !!!\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1301  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1302  	}
554c0a3abf216c Hans de Goede       2017-03-29  1303  
554c0a3abf216c Hans de Goede       2017-03-29  1304  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)) {
554c0a3abf216c Hans de Goede       2017-03-29  1305  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1306  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1307  	}
554c0a3abf216c Hans de Goede       2017-03-29  1308  
554c0a3abf216c Hans de Goede       2017-03-29  1309  	subtype = GetFrameSubType(pframe) >> 4;
554c0a3abf216c Hans de Goede       2017-03-29  1310  
554c0a3abf216c Hans de Goede       2017-03-29  1311  	if (subtype == WIFI_BEACON)
554c0a3abf216c Hans de Goede       2017-03-29  1312  		bssid->Reserved[0] = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1313  
554c0a3abf216c Hans de Goede       2017-03-29  1314  	bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
554c0a3abf216c Hans de Goede       2017-03-29  1315  
554c0a3abf216c Hans de Goede       2017-03-29  1316  	/* below is to copy the information element */
554c0a3abf216c Hans de Goede       2017-03-29  1317  	bssid->IELength = len;
554c0a3abf216c Hans de Goede       2017-03-29  1318  	memcpy(bssid->IEs, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->IELength);
554c0a3abf216c Hans de Goede       2017-03-29  1319  
554c0a3abf216c Hans de Goede       2017-03-29  1320  	/* check bw and channel offset */
554c0a3abf216c Hans de Goede       2017-03-29  1321  	/* parsing HT_CAP_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1322  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1323  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1324  			pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1325  			ht_cap_info = le16_to_cpu(pht_cap->cap_info);
554c0a3abf216c Hans de Goede       2017-03-29  1326  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1327  			ht_cap_info = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1328  	}
554c0a3abf216c Hans de Goede       2017-03-29  1329  	/* parsing HT_INFO_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1330  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1331  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1332  			pht_info = (struct HT_info_element *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1333  			ht_info_infos_0 = pht_info->infos[0];
554c0a3abf216c Hans de Goede       2017-03-29  1334  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1335  			ht_info_infos_0 = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1336  	}
554c0a3abf216c Hans de Goede       2017-03-29  1337  	if (ht_cap_info != cur_network->BcnInfo.ht_cap_info ||
554c0a3abf216c Hans de Goede       2017-03-29  1338  		((ht_info_infos_0&0x03) != (cur_network->BcnInfo.ht_info_infos_0&0x03))) {
554c0a3abf216c Hans de Goede       2017-03-29  1339  			DBG_871X("%s bcn now: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1340  							ht_cap_info, ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1341  			DBG_871X("%s bcn link: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1342  							cur_network->BcnInfo.ht_cap_info, cur_network->BcnInfo.ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1343  			DBG_871X("%s bw mode change\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1344  			{
554c0a3abf216c Hans de Goede       2017-03-29  1345  				/* bcn_info_update */
554c0a3abf216c Hans de Goede       2017-03-29  1346  				cur_network->BcnInfo.ht_cap_info = ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1347  				cur_network->BcnInfo.ht_info_infos_0 = ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1348  				/* to do : need to check that whether modify related register of BB or not */
554c0a3abf216c Hans de Goede       2017-03-29  1349  			}
554c0a3abf216c Hans de Goede       2017-03-29  1350  			/* goto _mismatch; */
554c0a3abf216c Hans de Goede       2017-03-29  1351  	}
554c0a3abf216c Hans de Goede       2017-03-29  1352  
554c0a3abf216c Hans de Goede       2017-03-29  1353  	/* Checking for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1354  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _DSSET_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1355  	if (p) {
554c0a3abf216c Hans de Goede       2017-03-29  1356  			bcn_channel = *(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1357  	} else {/* In 5G, some ap do not have DSSET IE checking HT info for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1358  			rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1359  			if (pht_info) {
554c0a3abf216c Hans de Goede       2017-03-29  1360  					bcn_channel = pht_info->primary_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1361  			} else { /* we don't find channel IE, so don't check it */
554c0a3abf216c Hans de Goede       2017-03-29  1362  					/* DBG_871X("Oops: %s we don't find channel IE, so don't check it\n", __func__); */
554c0a3abf216c Hans de Goede       2017-03-29  1363  					bcn_channel = Adapter->mlmeextpriv.cur_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1364  			}
554c0a3abf216c Hans de Goede       2017-03-29  1365  	}
554c0a3abf216c Hans de Goede       2017-03-29  1366  	if (bcn_channel != Adapter->mlmeextpriv.cur_channel) {
554c0a3abf216c Hans de Goede       2017-03-29  1367  			DBG_871X("%s beacon channel:%d cur channel:%d disconnect\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1368  						   bcn_channel, Adapter->mlmeextpriv.cur_channel);
554c0a3abf216c Hans de Goede       2017-03-29  1369  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1370  	}
554c0a3abf216c Hans de Goede       2017-03-29  1371  
554c0a3abf216c Hans de Goede       2017-03-29  1372  	/* checking SSID */
370730894bece5 Denis Straghkov     2020-04-22  1373  	ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1374  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _SSID_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
370730894bece5 Denis Straghkov     2020-04-22  1375  	if (p) {
370730894bece5 Denis Straghkov     2020-04-22  1376  		ssid_len = *(p + 1);
370730894bece5 Denis Straghkov     2020-04-22  1377  		if (ssid_len > NDIS_802_11_LENGTH_SSID)
370730894bece5 Denis Straghkov     2020-04-22  1378  			ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1379  	}
370730894bece5 Denis Straghkov     2020-04-22 @1380  	memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
370730894bece5 Denis Straghkov     2020-04-22  1381  	bssid->Ssid.SsidLength = ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1382  
554c0a3abf216c Hans de Goede       2017-03-29  1383  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("%s bssid.Ssid.Ssid:%s bssid.Ssid.SsidLength:%d "
554c0a3abf216c Hans de Goede       2017-03-29  1384  				"cur_network->network.Ssid.Ssid:%s len:%d\n", __func__, bssid->Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1385  				bssid->Ssid.SsidLength, cur_network->network.Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1386  				cur_network->network.Ssid.SsidLength));
554c0a3abf216c Hans de Goede       2017-03-29  1387  
554c0a3abf216c Hans de Goede       2017-03-29  1388  	if (memcmp(bssid->Ssid.Ssid, cur_network->network.Ssid.Ssid, 32) ||
554c0a3abf216c Hans de Goede       2017-03-29  1389  			bssid->Ssid.SsidLength != cur_network->network.Ssid.SsidLength) {
554c0a3abf216c Hans de Goede       2017-03-29  1390  		if (bssid->Ssid.Ssid[0] != '\0' && bssid->Ssid.SsidLength != 0) { /* not hidden ssid */
554c0a3abf216c Hans de Goede       2017-03-29  1391  			DBG_871X("%s(), SSID is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1392  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1393  		}
554c0a3abf216c Hans de Goede       2017-03-29  1394  	}
554c0a3abf216c Hans de Goede       2017-03-29  1395  
554c0a3abf216c Hans de Goede       2017-03-29  1396  	/* check encryption info */
554c0a3abf216c Hans de Goede       2017-03-29  1397  	val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1398  
554c0a3abf216c Hans de Goede       2017-03-29  1399  	if (val16 & BIT(4))
554c0a3abf216c Hans de Goede       2017-03-29  1400  		bssid->Privacy = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1401  	else
554c0a3abf216c Hans de Goede       2017-03-29  1402  		bssid->Privacy = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1403  
554c0a3abf216c Hans de Goede       2017-03-29  1404  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1405  			("%s(): cur_network->network.Privacy is %d, bssid.Privacy is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1406  			 __func__, cur_network->network.Privacy, bssid->Privacy));
554c0a3abf216c Hans de Goede       2017-03-29  1407  	if (cur_network->network.Privacy != bssid->Privacy) {
554c0a3abf216c Hans de Goede       2017-03-29  1408  		DBG_871X("%s(), privacy is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1409  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1410  	}
554c0a3abf216c Hans de Goede       2017-03-29  1411  
554c0a3abf216c Hans de Goede       2017-03-29  1412  	rtw_get_sec_ie(bssid->IEs, bssid->IELength, NULL, &rsn_len, NULL, &wpa_len);
554c0a3abf216c Hans de Goede       2017-03-29  1413  
554c0a3abf216c Hans de Goede       2017-03-29  1414  	if (rsn_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1415  		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
554c0a3abf216c Hans de Goede       2017-03-29  1416  	} else if (wpa_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1417  		encryp_protocol = ENCRYP_PROTOCOL_WPA;
554c0a3abf216c Hans de Goede       2017-03-29  1418  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1419  		if (bssid->Privacy)
554c0a3abf216c Hans de Goede       2017-03-29  1420  			encryp_protocol = ENCRYP_PROTOCOL_WEP;
554c0a3abf216c Hans de Goede       2017-03-29  1421  	}
554c0a3abf216c Hans de Goede       2017-03-29  1422  
554c0a3abf216c Hans de Goede       2017-03-29  1423  	if (cur_network->BcnInfo.encryp_protocol != encryp_protocol) {
554c0a3abf216c Hans de Goede       2017-03-29  1424  		DBG_871X("%s(): enctyp is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1425  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1426  	}
554c0a3abf216c Hans de Goede       2017-03-29  1427  
554c0a3abf216c Hans de Goede       2017-03-29  1428  	if (encryp_protocol == ENCRYP_PROTOCOL_WPA || encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
554c0a3abf216c Hans de Goede       2017-03-29  1429  		pbuf = rtw_get_wpa_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1430  		if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1431  			if (_SUCCESS == rtw_parse_wpa_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1432  				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1433  						("%s pnetwork->pairwise_cipher: %d, group_cipher is %d, is_8021x is %d\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1434  						 pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1435  			}
554c0a3abf216c Hans de Goede       2017-03-29  1436  		} else {
554c0a3abf216c Hans de Goede       2017-03-29  1437  			pbuf = rtw_get_wpa2_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1438  
554c0a3abf216c Hans de Goede       2017-03-29  1439  			if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1440  				if (_SUCCESS == rtw_parse_wpa2_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1441  					RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1442  							("%s pnetwork->pairwise_cipher: %d, pnetwork->group_cipher is %d, is_802x is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1443  							 __func__, pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1444  				}
554c0a3abf216c Hans de Goede       2017-03-29  1445  			}
554c0a3abf216c Hans de Goede       2017-03-29  1446  		}
554c0a3abf216c Hans de Goede       2017-03-29  1447  
554c0a3abf216c Hans de Goede       2017-03-29  1448  		RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
554c0a3abf216c Hans de Goede       2017-03-29  1449  				("%s cur_network->group_cipher is %d: %d\n", __func__, cur_network->BcnInfo.group_cipher, group_cipher));
554c0a3abf216c Hans de Goede       2017-03-29  1450  		if (pairwise_cipher != cur_network->BcnInfo.pairwise_cipher || group_cipher != cur_network->BcnInfo.group_cipher) {
554c0a3abf216c Hans de Goede       2017-03-29  1451  			DBG_871X("%s pairwise_cipher(%x:%x) or group_cipher(%x:%x) is not match\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1452  					pairwise_cipher, cur_network->BcnInfo.pairwise_cipher,
554c0a3abf216c Hans de Goede       2017-03-29  1453  					group_cipher, cur_network->BcnInfo.group_cipher);
554c0a3abf216c Hans de Goede       2017-03-29  1454  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1455  		}
554c0a3abf216c Hans de Goede       2017-03-29  1456  
554c0a3abf216c Hans de Goede       2017-03-29  1457  		if (is_8021x != cur_network->BcnInfo.is_8021x) {
554c0a3abf216c Hans de Goede       2017-03-29  1458  			DBG_871X("%s authentication is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1459  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1460  		}
554c0a3abf216c Hans de Goede       2017-03-29  1461  	}
554c0a3abf216c Hans de Goede       2017-03-29  1462  
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1463  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1464  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1465  
554c0a3abf216c Hans de Goede       2017-03-29  1466  _mismatch:
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1467  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1468  
554c0a3abf216c Hans de Goede       2017-03-29  1469  	if (pmlmepriv->NumOfBcnInfoChkFail == 0)
554c0a3abf216c Hans de Goede       2017-03-29  1470  		pmlmepriv->timeBcnInfoChkStart = jiffies;
554c0a3abf216c Hans de Goede       2017-03-29  1471  
554c0a3abf216c Hans de Goede       2017-03-29  1472  	pmlmepriv->NumOfBcnInfoChkFail++;
554c0a3abf216c Hans de Goede       2017-03-29  1473  	DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d (SeqNum of this Beacon frame = %d).\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail, GetSequence(pframe));
554c0a3abf216c Hans de Goede       2017-03-29  1474  
554c0a3abf216c Hans de Goede       2017-03-29  1475  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)
554c0a3abf216c Hans de Goede       2017-03-29  1476  		&& (pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD)) {
554c0a3abf216c Hans de Goede       2017-03-29  1477  		DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d >= threshold : %d (in %d ms), return FAIL.\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail,
554c0a3abf216c Hans de Goede       2017-03-29  1478  			DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD, jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart));
554c0a3abf216c Hans de Goede       2017-03-29  1479  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1480  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1481  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1482  	}
554c0a3abf216c Hans de Goede       2017-03-29  1483  
554c0a3abf216c Hans de Goede       2017-03-29  1484  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1485  }
554c0a3abf216c Hans de Goede       2017-03-29  1486  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer.
@ 2020-12-09  1:14 ` kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-12-09  1:14 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 23006 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   cd796ed3345030aa1bb332fe5c793b3dddaf56e7
commit: 370730894bece52b2bbd4eb727fbb39840cc0e14 Staging: rtl8723bs: rtw_wlan_util: Add size check of SSID IE
compiler: or1k-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <rong.a.chen@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer. [nullPointerArithmeticRedundantCheck]
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1375:6: note: Assuming that condition 'p' is not redundant
    if (p) {
        ^
   drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: note: Null pointer addition
    memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
                                ^
>> drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:201:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen);
     ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:816:4: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
      pframe += ssid_ielen_diff;
      ^
   drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c:706:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it? [uselessAssignmentPtrArg]
     pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, bssrate_len, bssrate, &pktlen);
     ^
>> drivers/staging/rtl8723bs/os_dep/ioctl_linux.c:2930:23: warning: Expression '(X & 0x3) > 0x3' is always false. [comparisonError]
          if ((extra_arg & 0x03) > 0x03)
                         ^

vim +/p +1380 drivers/staging/rtl8723bs/core/rtw_wlan_util.c

554c0a3abf216c Hans de Goede       2017-03-29  1259  
554c0a3abf216c Hans de Goede       2017-03-29  1260  int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
554c0a3abf216c Hans de Goede       2017-03-29  1261  {
554c0a3abf216c Hans de Goede       2017-03-29  1262  	unsigned int		len;
554c0a3abf216c Hans de Goede       2017-03-29  1263  	unsigned char 	*p;
554c0a3abf216c Hans de Goede       2017-03-29  1264  	unsigned short	val16, subtype;
554c0a3abf216c Hans de Goede       2017-03-29  1265  	struct wlan_network *cur_network = &(Adapter->mlmepriv.cur_network);
554c0a3abf216c Hans de Goede       2017-03-29  1266  	/* u8 wpa_ie[255], rsn_ie[255]; */
554c0a3abf216c Hans de Goede       2017-03-29  1267  	u16 wpa_len = 0, rsn_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1268  	u8 encryp_protocol = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1269  	struct wlan_bssid_ex *bssid;
554c0a3abf216c Hans de Goede       2017-03-29  1270  	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1271  	unsigned char *pbuf;
554c0a3abf216c Hans de Goede       2017-03-29  1272  	u32 wpa_ielen = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1273  	u8 *pbssid = GetAddr3Ptr(pframe);
554c0a3abf216c Hans de Goede       2017-03-29  1274  	struct HT_info_element *pht_info = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1275  	struct rtw_ieee80211_ht_cap *pht_cap = NULL;
554c0a3abf216c Hans de Goede       2017-03-29  1276  	u32 bcn_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1277  	unsigned short	ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1278  	unsigned char ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1279  	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
370730894bece5 Denis Straghkov     2020-04-22  1280  	int ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1281  
554c0a3abf216c Hans de Goede       2017-03-29  1282  	if (is_client_associated_to_ap(Adapter) == false)
554c0a3abf216c Hans de Goede       2017-03-29  1283  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1284  
554c0a3abf216c Hans de Goede       2017-03-29  1285  	len = packet_len - sizeof(struct ieee80211_hdr_3addr);
554c0a3abf216c Hans de Goede       2017-03-29  1286  
554c0a3abf216c Hans de Goede       2017-03-29  1287  	if (len > MAX_IE_SZ) {
554c0a3abf216c Hans de Goede       2017-03-29  1288  		DBG_871X("%s IE too long for survey event\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1289  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1290  	}
554c0a3abf216c Hans de Goede       2017-03-29  1291  
554c0a3abf216c Hans de Goede       2017-03-29  1292  	if (memcmp(cur_network->network.MacAddress, pbssid, 6)) {
554c0a3abf216c Hans de Goede       2017-03-29  1293  		DBG_871X("Oops: rtw_check_network_encrypt linked but recv other bssid bcn\n" MAC_FMT MAC_FMT,
554c0a3abf216c Hans de Goede       2017-03-29  1294  				MAC_ARG(pbssid), MAC_ARG(cur_network->network.MacAddress));
554c0a3abf216c Hans de Goede       2017-03-29  1295  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1296  	}
554c0a3abf216c Hans de Goede       2017-03-29  1297  
2ef2b7c21fc877 Joe Perches         2017-09-09  1298  	bssid = rtw_zmalloc(sizeof(struct wlan_bssid_ex));
c9d19e68a7963f Michael Straube     2018-07-11  1299  	if (!bssid) {
554c0a3abf216c Hans de Goede       2017-03-29  1300  		DBG_871X("%s rtw_zmalloc fail !!!\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1301  		return true;
554c0a3abf216c Hans de Goede       2017-03-29  1302  	}
554c0a3abf216c Hans de Goede       2017-03-29  1303  
554c0a3abf216c Hans de Goede       2017-03-29  1304  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)) {
554c0a3abf216c Hans de Goede       2017-03-29  1305  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1306  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1307  	}
554c0a3abf216c Hans de Goede       2017-03-29  1308  
554c0a3abf216c Hans de Goede       2017-03-29  1309  	subtype = GetFrameSubType(pframe) >> 4;
554c0a3abf216c Hans de Goede       2017-03-29  1310  
554c0a3abf216c Hans de Goede       2017-03-29  1311  	if (subtype == WIFI_BEACON)
554c0a3abf216c Hans de Goede       2017-03-29  1312  		bssid->Reserved[0] = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1313  
554c0a3abf216c Hans de Goede       2017-03-29  1314  	bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
554c0a3abf216c Hans de Goede       2017-03-29  1315  
554c0a3abf216c Hans de Goede       2017-03-29  1316  	/* below is to copy the information element */
554c0a3abf216c Hans de Goede       2017-03-29  1317  	bssid->IELength = len;
554c0a3abf216c Hans de Goede       2017-03-29  1318  	memcpy(bssid->IEs, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->IELength);
554c0a3abf216c Hans de Goede       2017-03-29  1319  
554c0a3abf216c Hans de Goede       2017-03-29  1320  	/* check bw and channel offset */
554c0a3abf216c Hans de Goede       2017-03-29  1321  	/* parsing HT_CAP_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1322  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1323  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1324  			pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1325  			ht_cap_info = le16_to_cpu(pht_cap->cap_info);
554c0a3abf216c Hans de Goede       2017-03-29  1326  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1327  			ht_cap_info = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1328  	}
554c0a3abf216c Hans de Goede       2017-03-29  1329  	/* parsing HT_INFO_IE */
554c0a3abf216c Hans de Goede       2017-03-29  1330  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1331  	if (p && len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1332  			pht_info = (struct HT_info_element *)(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1333  			ht_info_infos_0 = pht_info->infos[0];
554c0a3abf216c Hans de Goede       2017-03-29  1334  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1335  			ht_info_infos_0 = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1336  	}
554c0a3abf216c Hans de Goede       2017-03-29  1337  	if (ht_cap_info != cur_network->BcnInfo.ht_cap_info ||
554c0a3abf216c Hans de Goede       2017-03-29  1338  		((ht_info_infos_0&0x03) != (cur_network->BcnInfo.ht_info_infos_0&0x03))) {
554c0a3abf216c Hans de Goede       2017-03-29  1339  			DBG_871X("%s bcn now: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1340  							ht_cap_info, ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1341  			DBG_871X("%s bcn link: ht_cap_info:%x ht_info_infos_0:%x\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1342  							cur_network->BcnInfo.ht_cap_info, cur_network->BcnInfo.ht_info_infos_0);
554c0a3abf216c Hans de Goede       2017-03-29  1343  			DBG_871X("%s bw mode change\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1344  			{
554c0a3abf216c Hans de Goede       2017-03-29  1345  				/* bcn_info_update */
554c0a3abf216c Hans de Goede       2017-03-29  1346  				cur_network->BcnInfo.ht_cap_info = ht_cap_info;
554c0a3abf216c Hans de Goede       2017-03-29  1347  				cur_network->BcnInfo.ht_info_infos_0 = ht_info_infos_0;
554c0a3abf216c Hans de Goede       2017-03-29  1348  				/* to do : need to check that whether modify related register of BB or not */
554c0a3abf216c Hans de Goede       2017-03-29  1349  			}
554c0a3abf216c Hans de Goede       2017-03-29  1350  			/* goto _mismatch; */
554c0a3abf216c Hans de Goede       2017-03-29  1351  	}
554c0a3abf216c Hans de Goede       2017-03-29  1352  
554c0a3abf216c Hans de Goede       2017-03-29  1353  	/* Checking for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1354  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _DSSET_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1355  	if (p) {
554c0a3abf216c Hans de Goede       2017-03-29  1356  			bcn_channel = *(p + 2);
554c0a3abf216c Hans de Goede       2017-03-29  1357  	} else {/* In 5G, some ap do not have DSSET IE checking HT info for channel */
554c0a3abf216c Hans de Goede       2017-03-29  1358  			rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
554c0a3abf216c Hans de Goede       2017-03-29  1359  			if (pht_info) {
554c0a3abf216c Hans de Goede       2017-03-29  1360  					bcn_channel = pht_info->primary_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1361  			} else { /* we don't find channel IE, so don't check it */
554c0a3abf216c Hans de Goede       2017-03-29  1362  					/* DBG_871X("Oops: %s we don't find channel IE, so don't check it\n", __func__); */
554c0a3abf216c Hans de Goede       2017-03-29  1363  					bcn_channel = Adapter->mlmeextpriv.cur_channel;
554c0a3abf216c Hans de Goede       2017-03-29  1364  			}
554c0a3abf216c Hans de Goede       2017-03-29  1365  	}
554c0a3abf216c Hans de Goede       2017-03-29  1366  	if (bcn_channel != Adapter->mlmeextpriv.cur_channel) {
554c0a3abf216c Hans de Goede       2017-03-29  1367  			DBG_871X("%s beacon channel:%d cur channel:%d disconnect\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1368  						   bcn_channel, Adapter->mlmeextpriv.cur_channel);
554c0a3abf216c Hans de Goede       2017-03-29  1369  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1370  	}
554c0a3abf216c Hans de Goede       2017-03-29  1371  
554c0a3abf216c Hans de Goede       2017-03-29  1372  	/* checking SSID */
370730894bece5 Denis Straghkov     2020-04-22  1373  	ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1374  	p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _SSID_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
370730894bece5 Denis Straghkov     2020-04-22  1375  	if (p) {
370730894bece5 Denis Straghkov     2020-04-22  1376  		ssid_len = *(p + 1);
370730894bece5 Denis Straghkov     2020-04-22  1377  		if (ssid_len > NDIS_802_11_LENGTH_SSID)
370730894bece5 Denis Straghkov     2020-04-22  1378  			ssid_len = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1379  	}
370730894bece5 Denis Straghkov     2020-04-22 @1380  	memcpy(bssid->Ssid.Ssid, (p + 2), ssid_len);
370730894bece5 Denis Straghkov     2020-04-22  1381  	bssid->Ssid.SsidLength = ssid_len;
554c0a3abf216c Hans de Goede       2017-03-29  1382  
554c0a3abf216c Hans de Goede       2017-03-29  1383  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("%s bssid.Ssid.Ssid:%s bssid.Ssid.SsidLength:%d "
554c0a3abf216c Hans de Goede       2017-03-29  1384  				"cur_network->network.Ssid.Ssid:%s len:%d\n", __func__, bssid->Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1385  				bssid->Ssid.SsidLength, cur_network->network.Ssid.Ssid,
554c0a3abf216c Hans de Goede       2017-03-29  1386  				cur_network->network.Ssid.SsidLength));
554c0a3abf216c Hans de Goede       2017-03-29  1387  
554c0a3abf216c Hans de Goede       2017-03-29  1388  	if (memcmp(bssid->Ssid.Ssid, cur_network->network.Ssid.Ssid, 32) ||
554c0a3abf216c Hans de Goede       2017-03-29  1389  			bssid->Ssid.SsidLength != cur_network->network.Ssid.SsidLength) {
554c0a3abf216c Hans de Goede       2017-03-29  1390  		if (bssid->Ssid.Ssid[0] != '\0' && bssid->Ssid.SsidLength != 0) { /* not hidden ssid */
554c0a3abf216c Hans de Goede       2017-03-29  1391  			DBG_871X("%s(), SSID is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1392  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1393  		}
554c0a3abf216c Hans de Goede       2017-03-29  1394  	}
554c0a3abf216c Hans de Goede       2017-03-29  1395  
554c0a3abf216c Hans de Goede       2017-03-29  1396  	/* check encryption info */
554c0a3abf216c Hans de Goede       2017-03-29  1397  	val16 = rtw_get_capability((struct wlan_bssid_ex *)bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1398  
554c0a3abf216c Hans de Goede       2017-03-29  1399  	if (val16 & BIT(4))
554c0a3abf216c Hans de Goede       2017-03-29  1400  		bssid->Privacy = 1;
554c0a3abf216c Hans de Goede       2017-03-29  1401  	else
554c0a3abf216c Hans de Goede       2017-03-29  1402  		bssid->Privacy = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1403  
554c0a3abf216c Hans de Goede       2017-03-29  1404  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1405  			("%s(): cur_network->network.Privacy is %d, bssid.Privacy is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1406  			 __func__, cur_network->network.Privacy, bssid->Privacy));
554c0a3abf216c Hans de Goede       2017-03-29  1407  	if (cur_network->network.Privacy != bssid->Privacy) {
554c0a3abf216c Hans de Goede       2017-03-29  1408  		DBG_871X("%s(), privacy is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1409  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1410  	}
554c0a3abf216c Hans de Goede       2017-03-29  1411  
554c0a3abf216c Hans de Goede       2017-03-29  1412  	rtw_get_sec_ie(bssid->IEs, bssid->IELength, NULL, &rsn_len, NULL, &wpa_len);
554c0a3abf216c Hans de Goede       2017-03-29  1413  
554c0a3abf216c Hans de Goede       2017-03-29  1414  	if (rsn_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1415  		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
554c0a3abf216c Hans de Goede       2017-03-29  1416  	} else if (wpa_len > 0) {
554c0a3abf216c Hans de Goede       2017-03-29  1417  		encryp_protocol = ENCRYP_PROTOCOL_WPA;
554c0a3abf216c Hans de Goede       2017-03-29  1418  	} else {
554c0a3abf216c Hans de Goede       2017-03-29  1419  		if (bssid->Privacy)
554c0a3abf216c Hans de Goede       2017-03-29  1420  			encryp_protocol = ENCRYP_PROTOCOL_WEP;
554c0a3abf216c Hans de Goede       2017-03-29  1421  	}
554c0a3abf216c Hans de Goede       2017-03-29  1422  
554c0a3abf216c Hans de Goede       2017-03-29  1423  	if (cur_network->BcnInfo.encryp_protocol != encryp_protocol) {
554c0a3abf216c Hans de Goede       2017-03-29  1424  		DBG_871X("%s(): enctyp is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1425  		goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1426  	}
554c0a3abf216c Hans de Goede       2017-03-29  1427  
554c0a3abf216c Hans de Goede       2017-03-29  1428  	if (encryp_protocol == ENCRYP_PROTOCOL_WPA || encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
554c0a3abf216c Hans de Goede       2017-03-29  1429  		pbuf = rtw_get_wpa_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1430  		if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1431  			if (_SUCCESS == rtw_parse_wpa_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1432  				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1433  						("%s pnetwork->pairwise_cipher: %d, group_cipher is %d, is_8021x is %d\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1434  						 pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1435  			}
554c0a3abf216c Hans de Goede       2017-03-29  1436  		} else {
554c0a3abf216c Hans de Goede       2017-03-29  1437  			pbuf = rtw_get_wpa2_ie(&bssid->IEs[12], &wpa_ielen, bssid->IELength-12);
554c0a3abf216c Hans de Goede       2017-03-29  1438  
554c0a3abf216c Hans de Goede       2017-03-29  1439  			if (pbuf && (wpa_ielen > 0)) {
554c0a3abf216c Hans de Goede       2017-03-29  1440  				if (_SUCCESS == rtw_parse_wpa2_ie(pbuf, wpa_ielen+2, &group_cipher, &pairwise_cipher, &is_8021x)) {
554c0a3abf216c Hans de Goede       2017-03-29  1441  					RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
554c0a3abf216c Hans de Goede       2017-03-29  1442  							("%s pnetwork->pairwise_cipher: %d, pnetwork->group_cipher is %d, is_802x is %d\n",
554c0a3abf216c Hans de Goede       2017-03-29  1443  							 __func__, pairwise_cipher, group_cipher, is_8021x));
554c0a3abf216c Hans de Goede       2017-03-29  1444  				}
554c0a3abf216c Hans de Goede       2017-03-29  1445  			}
554c0a3abf216c Hans de Goede       2017-03-29  1446  		}
554c0a3abf216c Hans de Goede       2017-03-29  1447  
554c0a3abf216c Hans de Goede       2017-03-29  1448  		RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
554c0a3abf216c Hans de Goede       2017-03-29  1449  				("%s cur_network->group_cipher is %d: %d\n", __func__, cur_network->BcnInfo.group_cipher, group_cipher));
554c0a3abf216c Hans de Goede       2017-03-29  1450  		if (pairwise_cipher != cur_network->BcnInfo.pairwise_cipher || group_cipher != cur_network->BcnInfo.group_cipher) {
554c0a3abf216c Hans de Goede       2017-03-29  1451  			DBG_871X("%s pairwise_cipher(%x:%x) or group_cipher(%x:%x) is not match\n", __func__,
554c0a3abf216c Hans de Goede       2017-03-29  1452  					pairwise_cipher, cur_network->BcnInfo.pairwise_cipher,
554c0a3abf216c Hans de Goede       2017-03-29  1453  					group_cipher, cur_network->BcnInfo.group_cipher);
554c0a3abf216c Hans de Goede       2017-03-29  1454  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1455  		}
554c0a3abf216c Hans de Goede       2017-03-29  1456  
554c0a3abf216c Hans de Goede       2017-03-29  1457  		if (is_8021x != cur_network->BcnInfo.is_8021x) {
554c0a3abf216c Hans de Goede       2017-03-29  1458  			DBG_871X("%s authentication is not match\n", __func__);
554c0a3abf216c Hans de Goede       2017-03-29  1459  			goto _mismatch;
554c0a3abf216c Hans de Goede       2017-03-29  1460  		}
554c0a3abf216c Hans de Goede       2017-03-29  1461  	}
554c0a3abf216c Hans de Goede       2017-03-29  1462  
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1463  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1464  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1465  
554c0a3abf216c Hans de Goede       2017-03-29  1466  _mismatch:
2dac96b334aad2 Nachammai Karuppiah 2019-10-08  1467  	kfree(bssid);
554c0a3abf216c Hans de Goede       2017-03-29  1468  
554c0a3abf216c Hans de Goede       2017-03-29  1469  	if (pmlmepriv->NumOfBcnInfoChkFail == 0)
554c0a3abf216c Hans de Goede       2017-03-29  1470  		pmlmepriv->timeBcnInfoChkStart = jiffies;
554c0a3abf216c Hans de Goede       2017-03-29  1471  
554c0a3abf216c Hans de Goede       2017-03-29  1472  	pmlmepriv->NumOfBcnInfoChkFail++;
554c0a3abf216c Hans de Goede       2017-03-29  1473  	DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d (SeqNum of this Beacon frame = %d).\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail, GetSequence(pframe));
554c0a3abf216c Hans de Goede       2017-03-29  1474  
554c0a3abf216c Hans de Goede       2017-03-29  1475  	if ((pmlmepriv->timeBcnInfoChkStart != 0) && (jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart) <= DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS)
554c0a3abf216c Hans de Goede       2017-03-29  1476  		&& (pmlmepriv->NumOfBcnInfoChkFail >= DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD)) {
554c0a3abf216c Hans de Goede       2017-03-29  1477  		DBG_871X("%s by "ADPT_FMT" - NumOfChkFail = %d >= threshold : %d (in %d ms), return FAIL.\n", __func__, ADPT_ARG(Adapter), pmlmepriv->NumOfBcnInfoChkFail,
554c0a3abf216c Hans de Goede       2017-03-29  1478  			DISCONNECT_BY_CHK_BCN_FAIL_THRESHOLD, jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart));
554c0a3abf216c Hans de Goede       2017-03-29  1479  		pmlmepriv->timeBcnInfoChkStart = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1480  		pmlmepriv->NumOfBcnInfoChkFail = 0;
554c0a3abf216c Hans de Goede       2017-03-29  1481  		return _FAIL;
554c0a3abf216c Hans de Goede       2017-03-29  1482  	}
554c0a3abf216c Hans de Goede       2017-03-29  1483  
554c0a3abf216c Hans de Goede       2017-03-29  1484  	return _SUCCESS;
554c0a3abf216c Hans de Goede       2017-03-29  1485  }
554c0a3abf216c Hans de Goede       2017-03-29  1486  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-12-09  1:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-08 11:24 drivers/staging/rtl8723bs/core/rtw_wlan_util.c:1380:30: warning: Either the condition 'p' is redundant or there is pointer arithmetic with NULL pointer kernel test robot
2020-12-09  1:14 kernel test robot
2020-12-09  1:14 ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.