wlan: Fix Out-of-bound access in sapInterferenceRssiCount
Fix Out-of-bound access in sapInterferenceRssiCount, by checking
the limit of start address for channel info and end address for
channel info.
Change-Id: If21e09d0f11bd655a8e04139ccf55d3682734b17
CRs-Fixed: 2149350
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index 58f650b..7bf6090 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -580,7 +580,9 @@
SIDE EFFECTS
============================================================================*/
-void sapInterferenceRssiCount(tSapSpectChInfo *pSpectCh)
+void sapInterferenceRssiCount(tSapSpectChInfo *pSpectCh,
+ tSapSpectChInfo *spect_ch_strt_addr,
+ tSapSpectChInfo *spect_ch_end_addr)
{
tSapSpectChInfo *pExtSpectCh = NULL;
v_S31_t rssi;
@@ -596,7 +598,9 @@
{
case CHANNEL_1:
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -609,7 +613,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -622,7 +628,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -635,7 +643,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -651,7 +661,9 @@
case CHANNEL_2:
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -664,7 +676,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -677,7 +691,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -690,7 +706,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -703,7 +721,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -718,7 +738,9 @@
break;
case CHANNEL_3:
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -731,7 +753,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -744,7 +768,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -757,7 +783,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -770,7 +798,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -783,7 +813,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -798,7 +830,9 @@
break;
case CHANNEL_4:
pExtSpectCh = (pSpectCh - 3);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -811,7 +845,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -824,7 +860,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -837,7 +875,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -850,7 +890,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -863,7 +905,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -876,7 +920,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -894,7 +940,9 @@
case CHANNEL_6:
case CHANNEL_7:
pExtSpectCh = (pSpectCh - 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -907,7 +955,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -920,7 +970,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -933,7 +985,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -946,7 +1000,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -959,7 +1015,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -972,7 +1030,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -985,7 +1045,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1001,7 +1063,9 @@
case CHANNEL_8:
pExtSpectCh = (pSpectCh - 4);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1015,7 +1079,9 @@
}
pExtSpectCh = (pSpectCh - 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1028,7 +1094,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1041,7 +1109,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1054,7 +1124,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1067,7 +1139,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1080,7 +1154,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1096,7 +1172,9 @@
case CHANNEL_9:
pExtSpectCh = (pSpectCh - 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1110,7 +1188,9 @@
}
pExtSpectCh = (pSpectCh - 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1123,7 +1203,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1136,7 +1218,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1149,7 +1233,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1162,7 +1248,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1178,7 +1266,9 @@
case CHANNEL_10:
pExtSpectCh = (pSpectCh - 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1192,7 +1282,9 @@
}
pExtSpectCh = (pSpectCh - 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1205,7 +1297,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if(pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1218,7 +1312,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1231,7 +1327,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1247,7 +1345,9 @@
case CHANNEL_11:
pExtSpectCh = (pSpectCh - 1);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1260,7 +1360,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1273,7 +1375,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 3);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1286,7 +1390,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 4);
- if (pExtSpectCh != NULL)
+ if (pExtSpectCh != NULL &&
+ (pExtSpectCh >= spect_ch_strt_addr &&
+ pExtSpectCh < spect_ch_end_addr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr +
@@ -1345,6 +1451,9 @@
v_U32_t ieLen = 0;
tSirProbeRespBeacon *pBeaconStruct;
tpAniSirGlobal pMac = (tpAniSirGlobal) halHandle;
+ tSapSpectChInfo *pSpectChStartAddr = pSpectInfoParams->pSpectCh;
+ tSapSpectChInfo *pSpectChEndAddr =
+ pSpectInfoParams->pSpectCh + pSpectInfoParams->numSpectChans;
pBeaconStruct = vos_mem_malloc(sizeof(tSirProbeRespBeacon));
if ( NULL == pBeaconStruct )
@@ -1428,7 +1537,9 @@
tSapSpectChInfo *pExtSpectCh = NULL;
case PHY_DOUBLE_CHANNEL_LOW_PRIMARY: // Above the Primary Channel
pExtSpectCh = (pSpectCh + 1);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1444,7 +1555,9 @@
case PHY_DOUBLE_CHANNEL_HIGH_PRIMARY: // Below the Primary channel
pExtSpectCh = (pSpectCh - 1);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
if (IS_RSSI_VALID(pExtSpectCh->rssiAgr, rssi))
@@ -1463,7 +1576,9 @@
{
tSapSpectChInfo *pExtSpectCh = NULL;
pExtSpectCh = (pSpectCh + 1);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1475,7 +1590,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND2_RSSI_EFFECT_PRIMARY;
@@ -1487,7 +1604,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 3);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND3_RSSI_EFFECT_PRIMARY;
@@ -1503,7 +1622,9 @@
{
tSapSpectChInfo *pExtSpectCh = NULL;
pExtSpectCh = (pSpectCh - 1 );
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1515,7 +1636,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1527,7 +1650,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 2);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND2_RSSI_EFFECT_PRIMARY;
@@ -1543,7 +1668,9 @@
{
tSapSpectChInfo *pExtSpectCh = NULL;
pExtSpectCh = (pSpectCh - 1 );
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1555,7 +1682,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND2_RSSI_EFFECT_PRIMARY;
@@ -1567,7 +1696,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh + 1);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1583,7 +1714,9 @@
{
tSapSpectChInfo *pExtSpectCh = NULL;
pExtSpectCh = (pSpectCh - 1 );
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND1_RSSI_EFFECT_PRIMARY;
@@ -1595,7 +1728,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 2);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND2_RSSI_EFFECT_PRIMARY;
@@ -1607,7 +1742,9 @@
pExtSpectCh->rssiAgr = SOFTAP_MIN_RSSI;
}
pExtSpectCh = (pSpectCh - 3);
- if(pExtSpectCh != NULL)
+ if( pExtSpectCh != NULL &&
+ (pExtSpectCh >= pSpectChStartAddr &&
+ pExtSpectCh < pSpectChEndAddr))
{
++pExtSpectCh->bssCount;
rssi = pSpectCh->rssiAgr + SAP_SUBBAND3_RSSI_EFFECT_PRIMARY;
@@ -1624,7 +1761,8 @@
}
else if(operatingBand == eSAP_RF_SUBBAND_2_4_GHZ)
{
- sapInterferenceRssiCount(pSpectCh);
+ sapInterferenceRssiCount(pSpectCh, pSpectChStartAddr,
+ pSpectChEndAddr);
}
VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,