diff --git a/core/cdf/src/cdf_memory.c b/core/cdf/src/cdf_memory.c index 732d1e59c9ff..2aba419f6477 100644 --- a/core/cdf/src/cdf_memory.c +++ b/core/cdf/src/cdf_memory.c @@ -195,9 +195,9 @@ void *cdf_mem_malloc_debug(size_t size, char *fileName, uint32_t lineNum) uint32_t new_size; int flags = GFP_KERNEL; - if (size > (1024 * 1024)) { + if (size > (1024 * 1024) || size == 0) { CDF_TRACE(CDF_MODULE_ID_CDF, CDF_TRACE_LEVEL_ERROR, - "%s: called with arg > 1024K; passed in %zu !!!", + "%s: called with invalid arg; passed in %zu !!!", __func__, size); return NULL; } @@ -327,9 +327,9 @@ void *cdf_mem_malloc(size_t size) #ifdef CONFIG_WCNSS_MEM_PRE_ALLOC void *pmem; #endif - if (size > (1024 * 1024)) { + if (size > (1024 * 1024) || size == 0) { CDF_TRACE(CDF_MODULE_ID_CDF, CDF_TRACE_LEVEL_ERROR, - "%s: called with arg > 1024K; passed in %zu !!", + "%s: called with invalid arg; passed in %zu !!", __func__, size); return NULL; } diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 13a9bc8b89e1..31cae0c215ba 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -2763,15 +2763,21 @@ CDF_STATUS csr_neighbor_roam_init(tpAniSirGlobal pMac, uint8_t sessionId) pNeighborRoamInfo->cfgParams.channelInfo.numOfChannels = pMac->roam.configParam.neighborRoamConfig.neighborScanChanList. numChannels; - - pNeighborRoamInfo->cfgParams.channelInfo.ChannelList = + if (pNeighborRoamInfo->cfgParams.channelInfo.numOfChannels != 0) { + pNeighborRoamInfo->cfgParams.channelInfo.ChannelList = cdf_mem_malloc(pMac->roam.configParam.neighborRoamConfig. - neighborScanChanList.numChannels); - - if (NULL == pNeighborRoamInfo->cfgParams.channelInfo.ChannelList) { - sms_log(pMac, LOGE, + neighborScanChanList.numChannels); + if (NULL == + pNeighborRoamInfo->cfgParams.channelInfo.ChannelList) { + sms_log(pMac, LOGE, FL("Memory Allocation for CFG Channel List failed")); - return CDF_STATUS_E_NOMEM; + return CDF_STATUS_E_NOMEM; + } + } else { + pNeighborRoamInfo->cfgParams.channelInfo.ChannelList = NULL; + sms_log(pMac, LOGE, + FL("invalid neighbor roam channel list: %u"), + pNeighborRoamInfo->cfgParams.channelInfo.numOfChannels); } /* Update the roam global structure from CFG */