From 333475b1cfcd231346b0a364f626182fe60e4bb7 Mon Sep 17 00:00:00 2001 From: TianYH Date: Fri, 29 Aug 2025 09:59:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=89=E5=85=A8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8D=95DTS202508132989?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: TianYH --- .../wifi_manage/wifi_sta/sta_state_machine.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp index 1a1eee798..29ec32ce0 100755 --- a/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp +++ b/wifi/services/wifi_standard/wifi_framework/wifi_manage/wifi_sta/sta_state_machine.cpp @@ -3119,7 +3119,8 @@ void StaStateMachine::DhcpResultNotify::SaveDhcpResultExt(DhcpResult *dest, Dhcp } if (source->dnsList.dnsNumber > 0 && source->dnsList.dnsNumber <= DHCP_DNS_MAX_NUMBER) { dest->dnsList.dnsNumber = 0; - for (uint32_t i = 0; i < source->dnsList.dnsNumber; i++) { + uint32_t minIdx = std::min(source->dnsList.dnsNumber, source->dnsList.dnsAddr.size()); + for (uint32_t i = 0; i < minIdx; i++) { if (memcpy_s(dest->dnsList.dnsAddr[i], DHCP_LEASE_DATA_MAX_LEN, source->dnsList.dnsAddr[i], DHCP_LEASE_DATA_MAX_LEN -1) != EOK) { WIFI_LOGE("SaveDhcpResultExt memcpy_s failed! i:%{public}d", i); @@ -3281,7 +3282,8 @@ void StaStateMachine::DhcpResultNotify::TryToSaveIpV4ResultExt(IpInfo &ipInfo, I ipInfo.dnsAddr.push_back(ipInfo.secondDns); } if (result->dnsList.dnsNumber > 0 && result->dnsList.dnsNumber <= DHCP_DNS_MAX_NUMBER) { - for (uint32_t i = 0; i < result->dnsList.dnsNumber; i++) { + uint32_t minIdx = std::min(result->dnsList.dnsNumber, result->dnsList.dnsAddr.size()); + for (uint32_t i = 0; i < minIdx; i++) { unsigned int ipv4Address = IpTools::ConvertIpv4Address(result->dnsList.dnsAddr[i]); if (std::find(ipInfo.dnsAddr.begin(), ipInfo.dnsAddr.end(), ipv4Address) != ipInfo.dnsAddr.end()) { WIFI_LOGD("TryToSaveIpV4ResultExt dnsAddr already exists, skip it."); @@ -3368,7 +3370,8 @@ void StaStateMachine::DhcpResultNotify::TryToSaveIpV6Result(IpInfo &ipInfo, IpV6 ipv6Info.dnsAddr.push_back(ipv6Info.secondDns); } if (result->dnsList.dnsNumber <= DHCP_DNS_MAX_NUMBER) { - for (uint32_t i = 0; i < result->dnsList.dnsNumber; i++) { + uint32_t minIdx = std::min(result->dnsList.dnsNumber, result->dnsList.dnsAddr.size()); + for (uint32_t i = 0; i < minIdx; i++) { if (std::find(ipv6Info.dnsAddr.begin(), ipv6Info.dnsAddr.end(), result->dnsList.dnsAddr[i]) == ipv6Info.dnsAddr.end()) { ipv6Info.dnsAddr.push_back(result->dnsList.dnsAddr[i]); @@ -3503,7 +3506,8 @@ void StaStateMachine::DhcpResultNotify::DealDhcpOfferResult() ipInfo.dnsAddr.push_back(ipInfo.secondDns); } if (DhcpOfferInfo.dnsList.dnsNumber > 0 && DhcpOfferInfo.dnsList.dnsNumber <= DHCP_DNS_MAX_NUMBER) { - for (uint32_t i = 0; i < DhcpOfferInfo.dnsList.dnsNumber; i++) { + uint32_t minIdx = std::min(DhcpOfferInfo.dnsList.dnsNumber, DhcpOfferInfo.dnsList.dnsAddr.size()); + for (uint32_t i = 0; i < minIdx; i++) { uint32_t ipv4Address = IpTools::ConvertIpv4Address(DhcpOfferInfo.dnsList.dnsAddr[i]); if (std::find(ipInfo.dnsAddr.begin(), ipInfo.dnsAddr.end(), ipv4Address) != ipInfo.dnsAddr.end()) { WIFI_LOGD("DealDhcpOfferResult dnsAddr already exists, skip it."); -- Gitee From 5c59d1966dba8a62e803ed77f970ec57c279ab1e Mon Sep 17 00:00:00 2001 From: TianYH Date: Fri, 29 Aug 2025 10:32:31 +0800 Subject: [PATCH 2/2] DTS29636 Signed-off-by: TianYH --- wifi/frameworks/native/c_adapter/src/wifi_c_device.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wifi/frameworks/native/c_adapter/src/wifi_c_device.cpp b/wifi/frameworks/native/c_adapter/src/wifi_c_device.cpp index c0b1ef1a9..7a22d2513 100644 --- a/wifi/frameworks/native/c_adapter/src/wifi_c_device.cpp +++ b/wifi/frameworks/native/c_adapter/src/wifi_c_device.cpp @@ -204,7 +204,8 @@ static OHOS::Wifi::ErrCode ConvertDeviceConfigFromCpp(const OHOS::Wifi::WifiDevi return OHOS::Wifi::WIFI_OPT_FAILED; } result->bssidType = deviceConfig.bssidType; - if (memcpy_s(result->preSharedKey, WIFI_MAX_KEY_LEN, deviceConfig.preSharedKey.c_str(), WIFI_MAX_KEY_LEN) != EOK) { + uint32_t copyLen = std::min(sizeof(deviceConfig.preSharedKey.c_str()), WIFI_MAX_KEY_LEN); + if (memcpy_s(result->preSharedKey, copyLen, deviceConfig.preSharedKey.c_str(), copyLen) != EOK) { return OHOS::Wifi::WIFI_OPT_FAILED; } result->securityType = GetSecTypeByKeyMgmt(deviceConfig.keyMgmt); -- Gitee