diff options
| author | tinlin <tinlin@codeaurora.org> | 2019-04-26 17:13:04 +0800 |
|---|---|---|
| committer | tinlin <tinlin@codeaurora.org> | 2019-04-29 10:41:41 +0800 |
| commit | b81d814d8e5fed8839d70771d159f395c5f3bda9 (patch) | |
| tree | 78d1bc489d23824d36b2b78a8be1e8c383ca7b67 /tools/perf/scripts/python/sctop.py | |
| parent | 772bb3d029e9ffecdc91f5950ba2ab65ac0ffc0b (diff) | |
qcacld-2.0: Fix OOB read in sme_RrmProcessBeaconReportReqInd
Propagate from cld-3.0 to cld-2.0.
When beacon report request action frame is received,
rrmProcessBeaconReportReq() is called and num_channels value
is calculated from the action frame directly from user. This
value is assigned to pSmeBcnReportReq->channelList.numChannels
and this num channels value along with the channel list is
posted to sme for further processing. The sme function
sme_RrmProcessBeaconReportReqInd() processes this sme
message eWNI_SME_BEACON_REPORT_REQ_IND. In this function,
the channels in channel list are looped through the received
value pBeaconReq->channelList.numChannels and is copied to the
destination pSmeRrmContext->channelList array from the
pBeaconReq->channelList.channelNumber[] array.
The maximum possible number of channels in channel list
BeaconReq->channelList.channelNumber[] allocated statically
in the definition of tSirChannelList is
SIR_ESE_MAX_MEAS_IE_REQS (8).
So when the pBeaconReq->channelList.numChannels, possible OOB
read occurs.
Validate the value of pBeaconReq->channelList.numChannels
received from the action frame against the maximum supported
number of channels in channel list SIR_ESE_MAX_MEAS_IE_REQS (8).
Place this validation inside the function
sme_RrmProcessBeaconReportReqInd() instead of validating it
at rrmProcessBeaconReportReq() so that it defends from other
caller sme_SetEseBeaconRequest() which is from user space
command through IOCTL.
Change-Id: I2074b04081328ceab7eeb29c33631a635e9d93c3
CRs-Fixed: 2442733
Diffstat (limited to 'tools/perf/scripts/python/sctop.py')
0 files changed, 0 insertions, 0 deletions
