qcacld-3.0: Fix integer overflow in rrm_fill_beacon_ies()
In function rrm_fill_beacon_ies, the total IE length is calculated as sum of length field of the IE and 2 (element id 1 byte and IE length field 1 byte). The total IE length is defined of type uint16_t and will overflow if the *(pBcnIes + 1)=0xfe. Validate the len against total IE length to avoid overflow. Change-Id: If8f86952ce43c5923906fc6ef18705f1785c5d88 CRs-Fixed: 2573329
This commit is contained in:

committed by
nshrivas

vanhempi
16736e9253
commit
77a8a13b1b
@@ -747,10 +747,17 @@ rrm_fill_beacon_ies(struct mac_context *mac, uint8_t *pIes,
|
||||
}
|
||||
|
||||
while (BcnNumIes > 0) {
|
||||
len = *(pBcnIes + 1) + 2; /* element id + length. */
|
||||
len = *(pBcnIes + 1);
|
||||
len += 2; /* element id + length. */
|
||||
pe_debug("EID = %d, len = %d total = %d",
|
||||
*pBcnIes, *(pBcnIes + 1), len);
|
||||
|
||||
if (BcnNumIes < len) {
|
||||
pe_err("RRM: Invalid IE len:%d exp_len:%d",
|
||||
len, BcnNumIes);
|
||||
break;
|
||||
}
|
||||
|
||||
if (len <= 2) {
|
||||
pe_err("RRM: Invalid IE");
|
||||
break;
|
||||
|
Viittaa uudesa ongelmassa
Block a user