diff --git a/common/native/include/plugin_utils/message_parcel_utils.h b/common/native/include/plugin_utils/message_parcel_utils.h index ef9d2eed07cea5c880a92237c3739339b8467c97..8c1f608a8fe23634f2c9d8cde3d5c2c5496db79e 100644 --- a/common/native/include/plugin_utils/message_parcel_utils.h +++ b/common/native/include/plugin_utils/message_parcel_utils.h @@ -27,7 +27,7 @@ namespace OHOS { namespace EDM { class MessageParcelUtils { public: - static void WriteWifiDeviceConfig(const Wifi::WifiDeviceConfig &config, MessageParcel &data); + static void WriteWifiDeviceConfig(Wifi::WifiDeviceConfig &config, MessageParcel &data); static void WriteInstallParam(const AppExecFwk::InstallParam &installParam, MessageParcel &data); static void WriteIpAddress(MessageParcel &data, const Wifi::WifiIpAddress &address); static void ReadWifiDeviceConfig(MessageParcel &data, Wifi::WifiDeviceConfig &config); diff --git a/common/native/src/plugin_utils/message_parcel_utils.cpp b/common/native/src/plugin_utils/message_parcel_utils.cpp index 7e3f2cbd78fc747d36be363ce08d2a677ce5dcd3..c83501a0eb3ae8fd82f9ea59e68b207fe20dcac4 100644 --- a/common/native/src/plugin_utils/message_parcel_utils.cpp +++ b/common/native/src/plugin_utils/message_parcel_utils.cpp @@ -20,7 +20,7 @@ namespace OHOS { namespace EDM { -void MessageParcelUtils::WriteWifiDeviceConfig(const Wifi::WifiDeviceConfig &config, MessageParcel &data) +void MessageParcelUtils::WriteWifiDeviceConfig(Wifi::WifiDeviceConfig &config, MessageParcel &data) { data.WriteInt32(config.networkId); data.WriteInt32(config.status); @@ -55,7 +55,9 @@ void MessageParcelUtils::WriteWifiDeviceConfig(const Wifi::WifiDeviceConfig &con data.WriteString(config.wifiEapConfig.clientCert); data.WriteString(config.wifiEapConfig.privateKey); data.WriteUInt8Vector(config.wifiEapConfig.certEntry); - data.WriteString(std::string(config.wifiEapConfig.certPassword)); + data.WriteCString(config.wifiEapConfig.certPassword); + memset_s(config.wifiEapConfig.certPassword, sizeof(config.wifiEapConfig.certPassword), 0, + sizeof(config.wifiEapConfig.certPassword)); data.WriteInt32(static_cast(config.wifiEapConfig.phase2Method)); data.WriteInt32(static_cast(config.wifiProxyconfig.configureMethod)); data.WriteString(config.wifiProxyconfig.autoProxyConfig.pacWebAddress); @@ -76,7 +78,7 @@ void MessageParcelUtils::WriteIpAddress(MessageParcel &data, const Wifi::WifiIpA data.WriteInt32(address.family); data.WriteUint32(address.addressIpv4); size_t size = address.addressIpv6.size(); - data.WriteInt32(size); + data.WriteUint32(size); for (size_t i = 0; i < size; i++) { data.WriteUint8(address.addressIpv6[i]); } @@ -117,7 +119,7 @@ void MessageParcelUtils::ReadWifiDeviceConfig(MessageParcel &data, Wifi::WifiDev config.wifiEapConfig.clientCert = data.ReadString(); config.wifiEapConfig.privateKey = data.ReadString(); data.ReadUInt8Vector(&config.wifiEapConfig.certEntry); - strncpy_s(config.wifiEapConfig.certPassword, sizeof(config.wifiEapConfig.certPassword), data.ReadString().c_str(), + strncpy_s(config.wifiEapConfig.certPassword, sizeof(config.wifiEapConfig.certPassword), data.ReadCString(), sizeof(config.wifiEapConfig.certPassword) - 1); ProcessPhase2Method(data.ReadInt32(), config.wifiEapConfig); ProcessConfigureProxyMethod(data.ReadInt32(), config.wifiProxyconfig); @@ -202,12 +204,12 @@ void MessageParcelUtils::ReadIpAddress(MessageParcel &data, Wifi::WifiIpAddress constexpr int MAX_LIMIT_SIZE = 1024; address.family = data.ReadInt32(); address.addressIpv4 = data.ReadUint32(); - int size = data.ReadInt32(); + size_t size = data.ReadUint32(); if (size > MAX_LIMIT_SIZE) { EDMLOGE("Read ip address parameter error: %{public}d", size); return; } - for (int i = 0; i < size; i++) { + for (size_t i = 0; i < size; i++) { address.addressIpv6.push_back(data.ReadUint8()); } } diff --git a/interfaces/inner_api/wifi_manager/include/wifi_manager_proxy.h b/interfaces/inner_api/wifi_manager/include/wifi_manager_proxy.h index e8ddec616604c732db1b300db3f3dff2bf1a7d33..0ff5ec6a511ea1eae7faf438a3a37d7ab624b36c 100644 --- a/interfaces/inner_api/wifi_manager/include/wifi_manager_proxy.h +++ b/interfaces/inner_api/wifi_manager/include/wifi_manager_proxy.h @@ -27,7 +27,7 @@ public: ~WifiManagerProxy(); static std::shared_ptr GetWifiManagerProxy(); int32_t IsWifiActive(const AppExecFwk::ElementName &admin, bool &result); - int32_t SetWifiProfile(const AppExecFwk::ElementName &admin, const Wifi::WifiDeviceConfig &config); + int32_t SetWifiProfile(const AppExecFwk::ElementName &admin, Wifi::WifiDeviceConfig &config); private: static std::shared_ptr instance_; static std::mutex mutexLock_; diff --git a/interfaces/inner_api/wifi_manager/src/wifi_manager_proxy.cpp b/interfaces/inner_api/wifi_manager/src/wifi_manager_proxy.cpp index 1423fa649662d42990f0c9b74a96333ec0936b85..c77229b47a0a462a0d9bff57859f80ff35bbf8da 100644 --- a/interfaces/inner_api/wifi_manager/src/wifi_manager_proxy.cpp +++ b/interfaces/inner_api/wifi_manager/src/wifi_manager_proxy.cpp @@ -66,7 +66,7 @@ int32_t WifiManagerProxy::IsWifiActive(const AppExecFwk::ElementName &admin, boo return ERR_OK; } -int32_t WifiManagerProxy::SetWifiProfile(const AppExecFwk::ElementName &admin, const Wifi::WifiDeviceConfig &config) +int32_t WifiManagerProxy::SetWifiProfile(const AppExecFwk::ElementName &admin, Wifi::WifiDeviceConfig &config) { EDMLOGD("WifiManagerProxy::SetWifiProfile"); auto proxy = EnterpriseDeviceMgrProxy::GetInstance();