diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_util.c b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_util.c index 8e15c76772ebd10ecd1e78763f0fede76d5f8780..3ce32b9e6a6454f0b4885bf604228c352d15e65e 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_util.c +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_util.c @@ -435,6 +435,10 @@ static void GetInfoElems(int length, int end, char *srcBuf, ScanInfo *pcmd) } len = last - start - 1; infoElemsTemp[infoElemsSize].size = len/lenValue; + if ((len / lenValue + 1) <= 0) { + LOGE("GetInfoElems len is error"); + break; + } infoElemsTemp[infoElemsSize].content = (char *)calloc(len/lenValue+1, sizeof(char)); if (infoElemsTemp[infoElemsSize].content == NULL) { break; @@ -1052,7 +1056,7 @@ int GetScanResultText(const struct WifiScanResultExt *scanResult, } pos = buf; - end = buf + bufLen; + end = buf + bufLen -1; ret = HdiTxtPrintf(pos, end - pos, MACSTR "\t%d\t%d\t", MAC2STR(scanResult->bssid), scanResult->freq, scanResult->level); diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_wpa_proxy.c b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_wpa_proxy.c index d226d15404baa6aeebc83e88759496cfe570db8b..e40831a990ae525bbbd8ed4ad64b8732416f019b 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_wpa_proxy.c +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/client/hdi_client/hdi_interface/wifi_hdi_wpa_proxy.c @@ -822,7 +822,7 @@ WifiErrorNo SetHdiApIfaceName(const char *ifaceName) return WIFI_HAL_OPT_FAILED; } - if (strncmp(ifaceName, AP_IFNAME_COEX, IFACENAME_LEN -1) == 0) { + if (strncmp(ifaceName, AP_IFNAME_COEX, strlen(AP_IFNAME_COEX)) == 0) { if (strcpy_s(g_apCfgName, CFGNAME_LEN, WIFI_COEX_CFG) != EOK || strcpy_s(g_apIfaceName, IFACENAME_LEN, AP_IFNAME_COEX) != EOK || strcpy_s(g_hostapdCfg, CTRL_LEN, HOSTAPD_DEFAULT_CFG_COEX) != EOK) { diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/wifi_hal_interface/wifi_sta_hal_interface.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/wifi_hal_interface/wifi_sta_hal_interface.cpp index f9d4098595208d65dfd2a3d37b5808530096459f..8c50b9a9df8a5f742d00be2926c1eebbf6ae9eee 100644 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/wifi_hal_interface/wifi_sta_hal_interface.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_native/wifi_hal_interface/wifi_sta_hal_interface.cpp @@ -312,8 +312,7 @@ static void ParseScanInfo(std::vector &scanResultsInfo, std::ve WifiScanResultExt wifiScanResultExt = {0}; ConvertScanResultsInfo(wifiScanResultExt, scanResult); char buff[HDI_SCAN_RESULTS_MAX_LEN] = {0}; - int buffLen = HDI_SCAN_RESULTS_MAX_LEN; - buffLen = GetScanResultText(&wifiScanResultExt, &elems, buff, buffLen); + int buffLen = GetScanResultText(&wifiScanResultExt, &elems, buff, HDI_SCAN_RESULTS_MAX_LEN); ScanInfo scanInfo; if (memset_s(&scanInfo, sizeof(scanInfo), 0, sizeof(scanInfo)) != EOK) { LOGE("%{public}s: memset_s is failed", __func__);