forked from rubenslte/android_kernel_samsung_msm8226
wlan: Add sanity check to limit mgmt frames data len
Currently the frameLen in Rx pkt meta is not checked for upper bound in peHandleMgmtFrame. Add sanity check to drop the packet if frameLen is greater than 2000 bytes. Also add upper bound check for frameLen in limProcessAuthFrame function. Change-Id: Id8d80f892c18d044896224c22b21f667ee30eb6b CRs-Fixed: 2146331
This commit is contained in:
committed by
Francescodario Cuzzocrea
parent
62fbd622f0
commit
09edd8afac
@@ -1373,6 +1373,7 @@ VOS_STATUS peHandleMgmtFrame( v_PVOID_t pvosGCtx, v_PVOID_t vosBuff)
|
||||
vos_pkt_t *pVosPkt;
|
||||
VOS_STATUS vosStatus;
|
||||
v_U8_t *pRxPacketInfo;
|
||||
tANI_U16 frameLen;
|
||||
|
||||
pVosPkt = (vos_pkt_t *)vosBuff;
|
||||
if (NULL == pVosPkt)
|
||||
@@ -1396,6 +1397,12 @@ VOS_STATUS peHandleMgmtFrame( v_PVOID_t pvosGCtx, v_PVOID_t vosBuff)
|
||||
return VOS_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
|
||||
if (frameLen > WDA_MAX_MGMT_MPDU_LEN) {
|
||||
PELOG1(limLog(pMac, LOG1, FL("Dropping frame of len %d"), frameLen));
|
||||
vos_pkt_return_packet(pVosPkt);
|
||||
return VOS_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
//
|
||||
// The MPDU header is now present at a certain "offset" in
|
||||
|
||||
@@ -291,7 +291,8 @@ limProcessAuthFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tpPESession pse
|
||||
goto free;
|
||||
}
|
||||
|
||||
if (frameLen < LIM_ENCR_AUTH_BODY_LEN_SAP)
|
||||
if ((frameLen < LIM_ENCR_AUTH_BODY_LEN_SAP) ||
|
||||
(frameLen > LIM_ENCR_AUTH_BODY_LEN))
|
||||
{
|
||||
// Log error
|
||||
limLog(pMac, LOGE,
|
||||
|
||||
@@ -771,6 +771,8 @@ tBssSystemRole wdaGetGlobalSystemRole(tpAniSirGlobal pMac);
|
||||
#define WLANWDA_HO_IS_AN_AMPDU 0x4000
|
||||
#define WLANWDA_HO_LAST_MPDU_OF_AMPDU 0x400
|
||||
|
||||
#define WDA_MAX_MGMT_MPDU_LEN 2000
|
||||
|
||||
/* WDA_IS_RX_AN_AMPDU ********************************************************/
|
||||
# define WDA_IS_RX_AN_AMPDU(pRxMeta) \
|
||||
( ((WDI_DS_RxMetaInfoType*)(pRxMeta))->rxpFlags & WLANWDA_HO_IS_AN_AMPDU )
|
||||
|
||||
Reference in New Issue
Block a user