From fb1168f02bb7f617d0c7089da45aeb4cb4c49d24 Mon Sep 17 00:00:00 2001 From: xiaosi Date: Fri, 25 Nov 2022 19:14:01 +0800 Subject: [PATCH 1/3] ReadCString Signed-off-by: xiaosi --- .../src/wifi_device_callback_stub.cpp | 17 ++- .../wifi_standard/src/wifi_device_proxy.cpp | 60 +++++--- .../src/wifi_hotspot_callback_stub.cpp | 20 ++- .../wifi_standard/src/wifi_hotspot_proxy.cpp | 27 ++-- .../src/wifi_p2p_callback_stub.cpp | 28 ++-- .../wifi_standard/src/wifi_p2p_proxy.cpp | 42 ++++-- .../wifi_standard/src/wifi_scan_proxy.cpp | 10 +- .../wifi_manage/wifi_device_stub.cpp | 92 ++++++++---- .../wifi_manage/wifi_hotspot_stub.cpp | 61 ++++++-- .../wifi_manage/wifi_p2p_stub.cpp | 135 +++++++++++++----- .../wifi_manage/wifi_scan_stub.cpp | 7 +- 11 files changed, 360 insertions(+), 139 deletions(-) diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_callback_stub.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_callback_stub.cpp index 3ddc7eb8a..16d850bd6 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_callback_stub.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_callback_stub.cpp @@ -152,16 +152,20 @@ int WifiDeviceCallBackStub::RemoteOnWifiStateChanged(uint32_t code, MessageParce int WifiDeviceCallBackStub::RemoteOnWifiConnectionChanged(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; int state = data.ReadInt32(); WifiLinkedInfo info; info.networkId = data.ReadInt32(); - info.ssid = data.ReadCString(); - info.bssid = data.ReadCString(); + readStr = data.ReadCString(); + info.ssid = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; info.rssi = data.ReadInt32(); info.band = data.ReadInt32(); info.frequency = data.ReadInt32(); info.linkSpeed = data.ReadInt32(); - info.macAddress = data.ReadCString(); + readStr = data.ReadCString(); + info.macAddress = (readStr != nullptr) ? readStr : ""; info.ipAddress = data.ReadInt32(); int tmpConnState = data.ReadInt32(); if (tmpConnState >= 0 && tmpConnState <= int(ConnState::UNKNOWN)) { @@ -175,7 +179,8 @@ int WifiDeviceCallBackStub::RemoteOnWifiConnectionChanged(uint32_t code, Message info.chload = data.ReadInt32(); info.snr = data.ReadInt32(); info.isDataRestricted = data.ReadInt32(); - info.portalUrl = data.ReadCString(); + readStr = data.ReadCString(); + info.portalUrl = (readStr != nullptr) ? readStr : ""; int tmpState = data.ReadInt32(); if (tmpState >= 0 && tmpState <= int(SupplicantState::INVALID)) { info.supplicantState = SupplicantState(tmpState); @@ -206,8 +211,10 @@ int WifiDeviceCallBackStub::RemoteOnWifiRssiChanged(uint32_t code, MessageParcel int WifiDeviceCallBackStub::RemoteOnWifiWpsStateChanged(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; int state = data.ReadInt32(); - std::string pinCode = data.ReadCString(); + readStr = data.ReadCString(); + std::string pinCode = (readStr != nullptr) ? readStr : ""; OnWifiWpsStateChanged(state, pinCode); reply.WriteInt32(0); /* Reply 0 to indicate that no exception occurs. */ return 0; diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_proxy.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_proxy.cpp index 8f91c11fc..d7ca3f5f6 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_proxy.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_device_proxy.cpp @@ -372,6 +372,7 @@ void WifiDeviceProxy::ReadIpAddress(MessageParcel &reply, WifiIpAddress &address void WifiDeviceProxy::ParseDeviceConfigs(MessageParcel &reply, std::vector &result) { + const char *readStr = nullptr; constexpr int MAX_DEVICE_CONFIG_SIZE = 1024; int retSize = reply.ReadInt32(); if (retSize > MAX_DEVICE_CONFIG_SIZE) { @@ -382,18 +383,23 @@ void WifiDeviceProxy::ParseDeviceConfigs(MessageParcel &reply, std::vector= 0) && (tmpConnState <= (int)ConnState::UNKNOWN)) { @@ -796,7 +813,8 @@ void WifiDeviceProxy::ReadLinkedInfo(MessageParcel &reply, WifiLinkedInfo &info) info.chload = reply.ReadInt32(); info.snr = reply.ReadInt32(); info.isDataRestricted = reply.ReadInt32(); - info.portalUrl = reply.ReadCString(); + readStr = reply.ReadCString(); + info.portalUrl = (readStr != nullptr) ? readStr : ""; int tmpState = reply.ReadInt32(); if ((tmpState >= 0) && (tmpState <= (int)SupplicantState::INVALID)) { @@ -910,6 +928,7 @@ ErrCode WifiDeviceProxy::SetCountryCode(const std::string &countryCode) ErrCode WifiDeviceProxy::GetCountryCode(std::string &countryCode) { + const char *readStr = nullptr; if (mRemoteDied) { WIFI_LOGE("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; @@ -935,7 +954,8 @@ ErrCode WifiDeviceProxy::GetCountryCode(std::string &countryCode) return ErrCode(ret); } - countryCode = reply.ReadCString(); + readStr = reply.ReadCString(); + countryCode = (readStr != nullptr) ? readStr : ""; return WIFI_OPT_SUCCESS; } @@ -1046,6 +1066,7 @@ ErrCode WifiDeviceProxy::GetDeviceMacAddress(std::string &result) WIFI_LOGE("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; } + const char *readStr = nullptr; MessageOption option; MessageParcel data; MessageParcel reply; @@ -1068,7 +1089,8 @@ ErrCode WifiDeviceProxy::GetDeviceMacAddress(std::string &result) if (ErrCode(ret) != WIFI_OPT_SUCCESS) { return ErrCode(ret); } - result = reply.ReadCString(); + readStr = reply.ReadCString(); + result = (readStr != nullptr) ? readStr : ""; return WIFI_OPT_SUCCESS; } @@ -1112,4 +1134,4 @@ void WifiDeviceProxy::OnRemoteDied(const wptr &remoteObject) } } } // namespace Wifi -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_callback_stub.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_callback_stub.cpp index 83d329394..8979c4547 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_callback_stub.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_callback_stub.cpp @@ -81,10 +81,14 @@ int WifiHotspotCallbackStub::RemoteOnHotspotStateChanged(uint32_t code, MessageP int WifiHotspotCallbackStub::RemoteOnHotspotStaJoin(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; StationInfo info; - info.deviceName = data.ReadCString(); - info.bssid = data.ReadCString(); - info.ipAddr = data.ReadCString(); + readStr = data.ReadCString(); + info.deviceName = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + info.ipAddr = (readStr != nullptr) ? readStr : ""; OnHotspotStaJoin(info); reply.WriteInt32(0); return 0; @@ -93,10 +97,14 @@ int WifiHotspotCallbackStub::RemoteOnHotspotStaJoin(uint32_t code, MessageParcel int WifiHotspotCallbackStub::RemoteOnHotspotStaLeave(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; StationInfo info; - info.deviceName = data.ReadCString(); - info.bssid = data.ReadCString(); - info.ipAddr = data.ReadCString(); + readStr = data.ReadCString(); + info.deviceName = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + info.ipAddr = (readStr != nullptr) ? readStr : ""; OnHotspotStaLeave(info); reply.WriteInt32(0); return 0; diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_proxy.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_proxy.cpp index 62ce692c9..2dea14691 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_proxy.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_hotspot_proxy.cpp @@ -109,6 +109,7 @@ ErrCode WifiHotspotProxy::GetHotspotConfig(HotspotConfig &result) WIFI_LOGD("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; } + const char *readStr = nullptr; MessageOption option; MessageParcel data; MessageParcel reply; @@ -132,11 +133,13 @@ ErrCode WifiHotspotProxy::GetHotspotConfig(HotspotConfig &result) return ErrCode(ret); } - result.SetSsid(reply.ReadCString()); + readStr = reply.ReadCString(); + result.SetSsid((readStr != nullptr) ? readStr : ""); result.SetSecurityType(static_cast(reply.ReadInt32())); result.SetBand(static_cast(reply.ReadInt32())); result.SetChannel(reply.ReadInt32()); - result.SetPreSharedKey(reply.ReadCString()); + readStr = reply.ReadCString(); + result.SetPreSharedKey((readStr != nullptr) ? readStr : ""); result.SetMaxConn(reply.ReadInt32()); return WIFI_OPT_SUCCESS; @@ -181,6 +184,7 @@ ErrCode WifiHotspotProxy::GetStationList(std::vector &result) WIFI_LOGD("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; } + const char *readStr = nullptr; MessageOption option; MessageParcel data; MessageParcel reply; @@ -211,9 +215,12 @@ ErrCode WifiHotspotProxy::GetStationList(std::vector &result) } for (int i = 0; i < size; i++) { StationInfo info; - info.deviceName = reply.ReadCString(); - info.bssid = reply.ReadCString(); - info.ipAddr = reply.ReadCString(); + readStr = reply.ReadCString(); + info.deviceName = (readStr != nullptr) ? readStr : ""; + readStr = reply.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; + readStr = reply.ReadCString(); + info.ipAddr = (readStr != nullptr) ? readStr : ""; result.emplace_back(info); } @@ -306,6 +313,7 @@ ErrCode WifiHotspotProxy::GetBlockLists(std::vector &infos) WIFI_LOGD("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; } + const char *readStr = nullptr; MessageOption option; MessageParcel data; MessageParcel reply; @@ -338,9 +346,12 @@ ErrCode WifiHotspotProxy::GetBlockLists(std::vector &infos) for (int i = 0; i < size; i++) { StationInfo info; - info.deviceName = reply.ReadCString(); - info.bssid = reply.ReadCString(); - info.ipAddr = reply.ReadCString(); + readStr = reply.ReadCString(); + info.deviceName = (readStr != nullptr) ? readStr : ""; + readStr = reply.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; + readStr = reply.ReadCString(); + info.ipAddr = (readStr != nullptr) ? readStr : ""; infos.push_back(info); } return WIFI_OPT_SUCCESS; diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_callback_stub.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_callback_stub.cpp index 30413a26f..4c03dcb61 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_callback_stub.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_callback_stub.cpp @@ -180,10 +180,15 @@ void WifiP2pCallbackStub::RemoteOnP2pPersistentGroupsChanged(uint32_t code, Mess void WifiP2pCallbackStub::ReadWifiP2pDeviceData(MessageParcel &data, WifiP2pDevice &device) { - device.SetDeviceName(data.ReadCString()); - device.SetDeviceAddress(data.ReadCString()); - device.SetPrimaryDeviceType(data.ReadCString()); - device.SetSecondaryDeviceType(data.ReadCString()); + const char *readStr = nullptr; + readStr = data.ReadCString(); + device.SetDeviceName((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetDeviceAddress((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetPrimaryDeviceType((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetSecondaryDeviceType((readStr != nullptr) ? readStr : ""); device.SetP2pDeviceStatus(static_cast(data.ReadInt32())); WifiP2pWfdInfo wfdInfo; wfdInfo.SetWfdEnabled(data.ReadBool()); @@ -228,6 +233,7 @@ void WifiP2pCallbackStub::RemoteOnP2pPeersChanged(uint32_t code, MessageParcel & void WifiP2pCallbackStub::RemoteOnP2pServicesChanged(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; constexpr int MAX_SIZE = 512; std::vector srvInfo; int size = data.ReadInt32(); @@ -238,13 +244,17 @@ void WifiP2pCallbackStub::RemoteOnP2pServicesChanged(uint32_t code, MessageParce } for (int i = 0; i < size; ++i) { WifiP2pServiceInfo info; - info.SetServiceName(data.ReadCString()); - info.SetDeviceAddress(data.ReadCString()); + readStr = data.ReadCString(); + info.SetServiceName((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + info.SetDeviceAddress((readStr != nullptr) ? readStr : ""); info.SetServicerProtocolType(static_cast(data.ReadInt32())); int length = data.ReadInt32(); std::vector queryList; for (int j = 0; j < length; j++) { - queryList.push_back(data.ReadCString()); + readStr = data.ReadCString(); + std::string queryStr = (readStr != nullptr) ? readStr : ""; + queryList.push_back(queryStr); } info.SetQueryList(queryList); srvInfo.emplace_back(info); @@ -256,10 +266,12 @@ void WifiP2pCallbackStub::RemoteOnP2pServicesChanged(uint32_t code, MessageParce void WifiP2pCallbackStub::RemoteOnP2pConnectionChanged(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; WifiP2pLinkedInfo info; info.SetConnectState(static_cast(data.ReadInt32())); info.SetIsGroupOwner(data.ReadBool()); - info.SetIsGroupOwnerAddress(data.ReadCString()); + readStr = data.ReadCString(); + info.SetIsGroupOwnerAddress((readStr != nullptr) ? readStr : ""); OnP2pConnectionChanged(info); reply.WriteInt32(0); } diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_proxy.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_proxy.cpp index 8cfcf39a3..9109b2359 100644 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_proxy.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_p2p_proxy.cpp @@ -424,8 +424,11 @@ ErrCode WifiP2pProxy::DeleteGroup(const WifiP2pGroupInfo &group) void WifiP2pProxy::ReadWifiP2pServiceInfo(MessageParcel &reply, WifiP2pServiceInfo &info) const { - info.SetServiceName(reply.ReadCString()); - info.SetDeviceAddress(reply.ReadCString()); + const char *readStr = nullptr; + readStr = reply.ReadCString(); + info.SetServiceName((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + info.SetDeviceAddress((readStr != nullptr) ? readStr : ""); info.SetServicerProtocolType(static_cast(reply.ReadInt32())); std::vector queryList; @@ -436,7 +439,8 @@ void WifiP2pProxy::ReadWifiP2pServiceInfo(MessageParcel &reply, WifiP2pServiceIn return; } for (int i = 0; i < size; i++) { - std::string str = reply.ReadCString(); + readStr = reply.ReadCString(); + std::string str = (readStr != nullptr) ? readStr : ""; queryList.push_back(str); } info.SetQueryList(queryList); @@ -488,10 +492,15 @@ void WifiP2pProxy::WriteWifiP2pDeviceData(MessageParcel &data, const WifiP2pDevi void WifiP2pProxy::ReadWifiP2pDeviceData(MessageParcel &reply, WifiP2pDevice &device) const { - device.SetDeviceName(reply.ReadCString()); - device.SetDeviceAddress(reply.ReadCString()); - device.SetPrimaryDeviceType(reply.ReadCString()); - device.SetSecondaryDeviceType(reply.ReadCString()); + const char *readStr = nullptr; + readStr = reply.ReadCString(); + device.SetDeviceName((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + device.SetDeviceAddress((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + device.SetPrimaryDeviceType((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + device.SetSecondaryDeviceType((readStr != nullptr) ? readStr : ""); device.SetP2pDeviceStatus(static_cast(reply.ReadInt32())); WifiP2pWfdInfo wfdInfo; wfdInfo.SetWfdEnabled(reply.ReadBool()); @@ -526,18 +535,23 @@ void WifiP2pProxy::WriteWifiP2pGroupData(MessageParcel &data, const WifiP2pGroup void WifiP2pProxy::ReadWifiP2pGroupData(MessageParcel &reply, WifiP2pGroupInfo &info) const { + const char *readStr = nullptr; info.SetIsGroupOwner(reply.ReadBool()); WifiP2pDevice device; ReadWifiP2pDeviceData(reply, device); info.SetOwner(device); - info.SetPassphrase(reply.ReadCString()); - info.SetInterface(reply.ReadCString()); - info.SetGroupName(reply.ReadCString()); + readStr = reply.ReadCString(); + info.SetPassphrase((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + info.SetInterface((readStr != nullptr) ? readStr : ""); + readStr = reply.ReadCString(); + info.SetGroupName((readStr != nullptr) ? readStr : ""); info.SetFrequency(reply.ReadInt32()); info.SetIsPersistent(reply.ReadBool()); info.SetP2pGroupStatus(static_cast(reply.ReadInt32())); info.SetNetworkId(reply.ReadInt32()); - info.SetGoIpAddress(reply.ReadCString()); + readStr = reply.ReadCString(); + info.SetGoIpAddress((readStr != nullptr) ? readStr : ""); constexpr int MAX_SIZE = 512; int size = reply.ReadInt32(); @@ -647,7 +661,8 @@ ErrCode WifiP2pProxy::QueryP2pLinkedInfo(WifiP2pLinkedInfo &linkedInfo) } linkedInfo.SetConnectState(static_cast(reply.ReadInt32())); linkedInfo.SetIsGroupOwner(reply.ReadBool()); - linkedInfo.SetIsGroupOwnerAddress(reply.ReadCString()); + const char *groupOwnerAddr = reply.ReadCString(); + linkedInfo.SetIsGroupOwnerAddress((groupOwnerAddr != nullptr) ? groupOwnerAddr : ""); return WIFI_OPT_SUCCESS; } @@ -1074,7 +1089,8 @@ ErrCode WifiP2pProxy::Hid2dRequestGcIp(const std::string& gcMac, std::string& ip if (ErrCode(ret) != WIFI_OPT_SUCCESS) { return ErrCode(ret); } - ipAddr = reply.ReadCString(); + const char *ipAddress = reply.ReadCString(); + ipAddr = (ipAddress != nullptr) ? ipAddress : ""; return WIFI_OPT_SUCCESS; } diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp index a8b219090..98838d2d9 100755 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp @@ -193,6 +193,7 @@ ErrCode WifiScanProxy::GetScanInfoList(std::vector &result) WIFI_LOGD("failed to `%{public}s`,remote service is died!", __func__); return WIFI_OPT_FAILED; } + const char *readStr = nullptr; MessageOption option; MessageParcel data; MessageParcel reply; @@ -223,9 +224,12 @@ ErrCode WifiScanProxy::GetScanInfoList(std::vector &result) } for (int i = 0; i < tmpsize; ++i) { WifiScanInfo info; - info.bssid = reply.ReadCString(); - info.ssid = reply.ReadCString(); - info.capabilities = reply.ReadCString(); + readStr = reply.ReadCString(); + info.bssid = (readStr != nullptr) ? readStr : ""; + reply.ReadCString(); + info.ssid = (readStr != nullptr) ? readStr : ""; + reply.ReadCString(); + info.capabilities = (readStr != nullptr) ? readStr : ""; info.frequency = reply.ReadInt32(); info.rssi = reply.ReadInt32(); info.timestamp = reply.ReadInt64(); diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp index 3b7d7a39c..67905a851 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp @@ -115,9 +115,15 @@ void WifiDeviceStub::OnDisableWifi(uint32_t code, MessageParcel &data, MessagePa void WifiDeviceStub::OnInitWifiProtect(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; WifiProtectType protectType = (WifiProtectType)data.ReadInt32(); - std::string protectName = data.ReadCString(); - ErrCode ret = InitWifiProtect(protectType, protectName); + const char *protectName = data.ReadCString(); + if (protectName == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string protectName = protectName; + ret = InitWifiProtect(protectType, protectName); + } reply.WriteInt32(0); reply.WriteInt32(ret); return; @@ -126,9 +132,15 @@ void WifiDeviceStub::OnInitWifiProtect(uint32_t code, MessageParcel &data, Messa void WifiDeviceStub::OnGetWifiProtectRef(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; WifiProtectMode protectMode = (WifiProtectMode)data.ReadInt32(); - std::string protectName = data.ReadCString(); - ErrCode ret = GetWifiProtectRef(protectMode, protectName); + const char *protectName = data.ReadCString(); + if (protectName == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string protectName = protectName; + ret = GetWifiProtectRef(protectMode, protectName); + } reply.WriteInt32(0); reply.WriteInt32(ret); return; @@ -137,8 +149,14 @@ void WifiDeviceStub::OnGetWifiProtectRef(uint32_t code, MessageParcel &data, Mes void WifiDeviceStub::OnPutWifiProtectRef(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string protectName = data.ReadCString(); - ErrCode ret = PutWifiProtectRef(protectName); + ErrCode ret = WIFI_OPT_FAILED; + const char *protectName = data.ReadCString(); + if (protectName == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string protectName = protectName; + ret = PutWifiProtectRef(protectName); + } reply.WriteInt32(0); reply.WriteInt32(ret); return; @@ -179,20 +197,26 @@ void WifiDeviceStub::OnUpdateDeviceConfig(uint32_t code, MessageParcel &data, Me void WifiDeviceStub::ReadWifiDeviceConfig(MessageParcel &data, WifiDeviceConfig &config) { + const char *readStr = nullptr; config.networkId = data.ReadInt32(); config.status = data.ReadInt32(); - config.bssid = data.ReadCString(); - config.ssid = data.ReadCString(); + readStr = data.ReadCString(); + config.bssid = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.ssid = (readStr != nullptr) ? readStr : ""; config.band = data.ReadInt32(); config.channel = data.ReadInt32(); config.frequency = data.ReadInt32(); config.level = data.ReadInt32(); config.isPasspoint = data.ReadBool(); config.isEphemeral = data.ReadBool(); - config.preSharedKey = data.ReadCString(); - config.keyMgmt = data.ReadCString(); + readStr = data.ReadCString(); + config.preSharedKey = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.keyMgmt = (readStr != nullptr) ? readStr : ""; for (int i = 0; i < WEPKEYS_SIZE; i++) { - config.wepKeys[i] = data.ReadCString(); + readStr = data.ReadCString(); + config.wepKeys[i] = (readStr != nullptr) ? readStr : ""; } config.wepTxKeyIndex = data.ReadInt32(); config.priority = data.ReadInt32(); @@ -205,15 +229,22 @@ void WifiDeviceStub::ReadWifiDeviceConfig(MessageParcel &data, WifiDeviceConfig ReadIpAddress(data, config.wifiIpConfig.staticIpAddress.gateway); ReadIpAddress(data, config.wifiIpConfig.staticIpAddress.dnsServer1); ReadIpAddress(data, config.wifiIpConfig.staticIpAddress.dnsServer2); - config.wifiIpConfig.staticIpAddress.domains = data.ReadCString(); - config.wifiEapConfig.eap = data.ReadCString(); - config.wifiEapConfig.identity = data.ReadCString(); - config.wifiEapConfig.password = data.ReadCString(); + readStr = data.ReadCString(); + config.wifiIpConfig.staticIpAddress.domains = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.wifiEapConfig.eap = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.wifiEapConfig.identity = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.wifiEapConfig.password = (readStr != nullptr) ? readStr : ""; config.wifiProxyconfig.configureMethod = ConfigureProxyMethod(data.ReadInt32()); - config.wifiProxyconfig.autoProxyConfig.pacWebAddress = data.ReadCString(); - config.wifiProxyconfig.manualProxyConfig.serverHostName = data.ReadCString(); + readStr = data.ReadCString(); + config.wifiProxyconfig.autoProxyConfig.pacWebAddress = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + config.wifiProxyconfig.manualProxyConfig.serverHostName = (readStr != nullptr) ? readStr : ""; config.wifiProxyconfig.manualProxyConfig.serverPort = data.ReadInt32(); - config.wifiProxyconfig.manualProxyConfig.exclusionObjectList = data.ReadCString(); + readStr = data.ReadCString(); + config.wifiProxyconfig.manualProxyConfig.exclusionObjectList = (readStr != nullptr) ? readStr : ""; config.wifiPrivacySetting = WifiPrivacyConfig(data.ReadInt32()); return; } @@ -414,12 +445,19 @@ void WifiDeviceStub::OnDisconnect(uint32_t code, MessageParcel &data, MessagePar void WifiDeviceStub::OnStartWps(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; WpsConfig config; config.setup = SetupMethod(data.ReadInt32()); - config.pin = data.ReadCString(); - config.bssid = data.ReadCString(); + const char *pin = data.ReadCString(); + const char *bssid = data.ReadCString(); + if (pin == nullptr || bssid == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + config.pin = pin; + config.bssid = bssid; + ret = StartWps(config); + } - ErrCode ret = StartWps(config); reply.WriteInt32(0); reply.WriteInt32(ret); @@ -519,8 +557,14 @@ void WifiDeviceStub::OnGetIpInfo(uint32_t code, MessageParcel &data, MessageParc void WifiDeviceStub::OnSetCountryCode(uint32_t code, MessageParcel &data, MessageParcel &reply) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string countrycode = data.ReadCString(); - ErrCode ret = SetCountryCode(countrycode); + ErrCode ret = WIFI_OPT_FAILED; + const char *countrycode = data.ReadCString(); + if (countrycode == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string countrycode = countrycode; + ret = SetCountryCode(countrycode); + } reply.WriteInt32(0); reply.WriteInt32(ret); @@ -631,4 +675,4 @@ void WifiDeviceStub::OnSetLowLatencyMode(uint32_t code, MessageParcel &data, Mes reply.WriteBool(SetLowLatencyMode(enabled)); } } // namespace Wifi -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp index 66cc1a195..bf85f8484 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp @@ -125,14 +125,21 @@ void WifiHotspotStub::OnGetHotspotConfig( void WifiHotspotStub::OnSetApConfigWifi(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; HotspotConfig config; - config.SetSsid(data.ReadCString()); + const char *ssid = data.ReadCString(); config.SetSecurityType(static_cast(data.ReadInt32())); config.SetBand(static_cast(data.ReadInt32())); config.SetChannel(data.ReadInt32()); - config.SetPreSharedKey(data.ReadCString()); + const char *preSharedKey = data.ReadCString(); config.SetMaxConn(data.ReadInt32()); - ErrCode ret = SetHotspotConfig(config); + if (ssid == nullptr || preSharedKey == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + config.SetSsid(ssid); + config.SetPreSharedKey(preSharedKey); + ret = SetHotspotConfig(config); + } reply.WriteInt32(0); reply.WriteInt32(ret); @@ -163,11 +170,19 @@ void WifiHotspotStub::OnGetStationList(uint32_t code, MessageParcel &data, Messa void WifiHotspotStub::OnDisassociateSta(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - info.deviceName = data.ReadCString(); - info.bssid = data.ReadCString(); - info.ipAddr = data.ReadCString(); - ErrCode ret = DisassociateSta(info); + const char *deviceName = data.ReadCString(); + const char *bssid = data.ReadCString(); + const char *ipAddr = data.ReadCString(); + if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + info.deviceName = deviceName; + info.bssid = bssid; + info.ipAddr = ipAddr; + ret = DisassociateSta(info); + } reply.WriteInt32(0); reply.WriteInt32(ret); return; @@ -234,11 +249,19 @@ void WifiHotspotStub::OnDisableWifiAp(uint32_t code, MessageParcel &data, Messag void WifiHotspotStub::OnAddBlockList(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - info.deviceName = data.ReadCString(); - info.bssid = data.ReadCString(); - info.ipAddr = data.ReadCString(); - ErrCode ret = AddBlockList(info); + const char *deviceName = data.ReadCString(); + const char *bssid = data.ReadCString(); + const char *ipAddr = data.ReadCString(); + if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + info.deviceName = deviceName; + info.bssid = bssid; + info.ipAddr = ipAddr; + ret = AddBlockList(info); + } reply.WriteInt32(0); reply.WriteInt32(ret); @@ -248,11 +271,19 @@ void WifiHotspotStub::OnAddBlockList(uint32_t code, MessageParcel &data, Message void WifiHotspotStub::OnDelBlockList(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - info.deviceName = data.ReadCString(); - info.bssid = data.ReadCString(); - info.ipAddr = data.ReadCString(); - ErrCode ret = DelBlockList(info); + const char *deviceName = data.ReadCString(); + const char *bssid = data.ReadCString(); + const char *ipAddr = data.ReadCString(); + if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + info.deviceName = deviceName; + info.bssid = bssid; + info.ipAddr = ipAddr; + ret = DelBlockList(info); + } reply.WriteInt32(0); reply.WriteInt32(ret); diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp index 05077cf14..ee624c527 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp @@ -406,9 +406,12 @@ void WifiP2pStub::OnQueryP2pServices(uint32_t code, MessageParcel &data, Message bool WifiP2pStub::ReadWifiP2pServiceInfo(MessageParcel &data, WifiP2pServiceInfo &info) { + const char *readStr = nullptr; constexpr int MAX_QUERY_SIZE = 256; - info.SetServiceName(data.ReadCString()); - info.SetDeviceAddress(data.ReadCString()); + readStr = data.ReadCString(); + info.SetServiceName((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + info.SetDeviceAddress((readStr != nullptr) ? readStr : ""); info.SetServicerProtocolType(static_cast(data.ReadInt32())); std::vector queryList; int size = data.ReadInt32(); @@ -416,7 +419,8 @@ bool WifiP2pStub::ReadWifiP2pServiceInfo(MessageParcel &data, WifiP2pServiceInfo return false; } for (int i = 0; i < size; i++) { - std::string str = data.ReadCString(); + readStr = data.ReadCString(); + std::string str = (readStr != nullptr) ? readStr : ""; queryList.push_back(str); } info.SetQueryList(queryList); @@ -457,10 +461,15 @@ void WifiP2pStub::WriteWifiP2pServiceInfo(MessageParcel &reply, const WifiP2pSer void WifiP2pStub::ReadWifiP2pDeviceData(MessageParcel &data, WifiP2pDevice &device) { - device.SetDeviceName(data.ReadCString()); - device.SetDeviceAddress(data.ReadCString()); - device.SetPrimaryDeviceType(data.ReadCString()); - device.SetSecondaryDeviceType(data.ReadCString()); + const char *readStr = nullptr; + readStr = data.ReadCString(); + device.SetDeviceName((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetDeviceAddress((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetPrimaryDeviceType((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + device.SetSecondaryDeviceType((readStr != nullptr) ? readStr : ""); device.SetP2pDeviceStatus(static_cast(data.ReadInt32())); WifiP2pWfdInfo wfdInfo; wfdInfo.SetWfdEnabled(data.ReadBool()); @@ -491,19 +500,24 @@ void WifiP2pStub::WriteWifiP2pDeviceData(MessageParcel &reply, const WifiP2pDevi bool WifiP2pStub::ReadWifiP2pGroupData(MessageParcel &data, WifiP2pGroupInfo &info) { + const char *readStr = nullptr; constexpr int MAX_DEV_SIZE = 256; info.SetIsGroupOwner(data.ReadBool()); WifiP2pDevice device; ReadWifiP2pDeviceData(data, device); info.SetOwner(device); - info.SetPassphrase(data.ReadCString()); - info.SetInterface(data.ReadCString()); - info.SetGroupName(data.ReadCString()); + readStr = data.ReadCString(); + info.SetPassphrase((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + info.SetInterface((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + info.SetGroupName((readStr != nullptr) ? readStr : ""); info.SetFrequency(data.ReadInt32()); info.SetIsPersistent(data.ReadBool()); info.SetP2pGroupStatus(static_cast(data.ReadInt32())); info.SetNetworkId(data.ReadInt32()); - info.SetGoIpAddress(data.ReadCString()); + readStr = data.ReadCString(); + info.SetGoIpAddress((readStr != nullptr) ? readStr : ""); int size = data.ReadInt32(); if (size > MAX_DEV_SIZE) { return false; @@ -537,9 +551,13 @@ void WifiP2pStub::WriteWifiP2pGroupData(MessageParcel &reply, const WifiP2pGroup void WifiP2pStub::ReadWifiP2pConfigData(MessageParcel &data, WifiP2pConfig &config) { - config.SetDeviceAddress(data.ReadCString()); - config.SetPassphrase(data.ReadCString()); - config.SetGroupName(data.ReadCString()); + const char *readStr = nullptr; + readStr = data.ReadCString(); + config.SetDeviceAddress((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + config.SetPassphrase((readStr != nullptr) ? readStr : ""); + readStr = data.ReadCString(); + config.SetGroupName((readStr != nullptr) ? readStr : ""); config.SetGoBand(static_cast(data.ReadInt32())); config.SetNetId(data.ReadInt32()); config.SetGroupOwnerIntent(data.ReadInt32()); @@ -607,8 +625,14 @@ void WifiP2pStub::OnGetSupportedFeatures( void WifiP2pStub::OnSetP2pDeviceName(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string deviceName = data.ReadCString(); - int ret = SetP2pDeviceName(deviceName); + ErrCode ret = WIFI_OPT_FAILED; + const char *readStr = data.ReadCString(); + if (readStr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string deviceName = readStr; + ret = SetP2pDeviceName(deviceName); + } reply.WriteInt32(0); reply.WriteInt32(ret); @@ -635,9 +659,15 @@ void WifiP2pStub::OnHid2dRequestGcIp(uint32_t code, MessageParcel &data, { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string gcMac = data.ReadCString(); + ErrCode ret = WIFI_OPT_FAILED; + const char *readStr = data.ReadCString(); std::string ipAddr; - int ret = Hid2dRequestGcIp(gcMac, ipAddr); + if (readStr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string gcMac = readStr; + ret = Hid2dRequestGcIp(gcMac, ipAddr); + } reply.WriteInt32(0); reply.WriteInt32(ret); if (ret == WIFI_OPT_SUCCESS) { @@ -681,8 +711,14 @@ void WifiP2pStub::OnHid2dRemoveGcGroup(uint32_t code, MessageParcel &data, { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string gcIfName = data.ReadCString(); - int ret = Hid2dRemoveGcGroup(gcIfName); + ErrCode ret = WIFI_OPT_FAILED; + const char *readStr = data.ReadCString(); + if (readStr == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string gcIfName = readStr; + ret = Hid2dRemoveGcGroup(gcIfName); + } reply.WriteInt32(0); reply.WriteInt32(ret); } @@ -692,14 +728,23 @@ void WifiP2pStub::OnHid2dConnect(uint32_t code, MessageParcel &data, { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; Hid2dConnectConfig config; - config.SetSsid(data.ReadCString()); - config.SetBssid(data.ReadCString()); - config.SetPreSharedKey(data.ReadCString()); - config.SetFrequency(data.ReadInt32()); - config.SetDhcpMode(DhcpMode(data.ReadInt32())); + const char *ssid = data.ReadCString(); + const char *bssid = data.ReadCString(); + const char *preSharedKey = data.ReadCString(); + if (ssid == nullptr || bssid == nullptr || preSharedKey == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + config.SetSsid(ssid); + config.SetBssid(bssid); + config.SetPreSharedKey(preSharedKey); + config.SetFrequency(data.ReadInt32()); + config.SetDhcpMode(DhcpMode(data.ReadInt32())); + + ret = Hid2dConnect(config); + } - int ret = Hid2dConnect(config); reply.WriteInt32(0); reply.WriteInt32(ret); } @@ -709,12 +754,21 @@ void WifiP2pStub::OnHid2dConfigIPAddr(uint32_t code, MessageParcel &data, { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + ErrCode ret = WIFI_OPT_FAILED; IpAddrInfo ipInfo; - std::string ifName = data.ReadCString(); - ipInfo.ip = data.ReadCString(); - ipInfo.gateway = data.ReadCString(); - ipInfo.netmask = data.ReadCString(); - int ret = Hid2dConfigIPAddr(ifName, ipInfo); + const char *ifName = data.ReadCString(); + const char *ip = data.ReadCString(); + const char *gateway = data.ReadCString(); + const char *netmask = data.ReadCString(); + if (ifName == nullptr || ip == nullptr || gateway == nullptr || netmask == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string ifName = ifName; + ipInfo.ip = ip; + ipInfo.gateway = gateway; + ipInfo.netmask = netmask; + ret = Hid2dConfigIPAddr(ifName, ipInfo); + } reply.WriteInt32(0); reply.WriteInt32(ret); } @@ -724,8 +778,14 @@ void WifiP2pStub::OnHid2dReleaseIPAddr(uint32_t code, MessageParcel &data, { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); - std::string ifName = data.ReadCString(); - int ret = Hid2dReleaseIPAddr(ifName); + ErrCode ret = WIFI_OPT_FAILED; + const char *ifName = data.ReadCString(); + if (ifName == nullptr) { + ret = WIFI_OPT_INVALID_PARAM; + } else { + std::string ifName = ifName; + ret = Hid2dReleaseIPAddr(ifName); + } reply.WriteInt32(0); reply.WriteInt32(ret); } @@ -734,11 +794,14 @@ void WifiP2pStub::OnHid2dGetRecommendChannel( uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); + const char *readStr = nullptr; RecommendChannelRequest request; RecommendChannelResponse response; - request.remoteIfName = data.ReadCString(); + readStr = data.ReadCString(); + request.remoteIfName = (readStr != nullptr) ? readStr : ""; request.remoteIfMode = data.ReadInt32(); - request.localIfName = data.ReadCString(); + readStr = data.ReadCString(); + request.localIfName = (readStr != nullptr) ? readStr : ""; request.localIfMode = data.ReadInt32(); request.prefBand = data.ReadInt32(); request.prefBandwidth = PreferBandwidth(data.ReadInt32()); @@ -825,4 +888,4 @@ void WifiP2pStub::SetSingleCallback(const bool isSingleCallback) mSingleCallback = true; } } // namespace Wifi -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_scan_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_scan_stub.cpp index eb8c49691..e713fbb07 100755 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_scan_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_scan_stub.cpp @@ -144,10 +144,13 @@ int WifiScanStub::OnScan(uint32_t code, MessageParcel &data, MessageParcel &repl int WifiScanStub::OnScanByParams(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { WIFI_LOGD("run OnScanByParams code %{public}u, datasize %{public}zu", code, data.GetRawDataSize()); + const char *readStr = nullptr; constexpr int MAX_FREQS_SIZE = 512; WifiScanParams params; - params.ssid = data.ReadCString(); - params.bssid = data.ReadCString(); + readStr = data.ReadCString(); + params.ssid = (readStr != nullptr) ? readStr : ""; + readStr = data.ReadCString(); + params.bssid = (readStr != nullptr) ? readStr : ""; int size = data.ReadInt32(); if (size > MAX_FREQS_SIZE) { reply.WriteInt32(0); -- Gitee From f53f0e1cfab7ef108ccb805089b20a8a31f75f52 Mon Sep 17 00:00:00 2001 From: xiaosi Date: Fri, 25 Nov 2022 19:48:13 +0800 Subject: [PATCH 2/3] fix ReadCString Signed-off-by: xiaosi --- .../wifi_manage/wifi_device_stub.cpp | 34 ++++++------ .../wifi_manage/wifi_hotspot_stub.cpp | 52 +++++++++---------- .../wifi_manage/wifi_p2p_stub.cpp | 39 +++++++------- 3 files changed, 63 insertions(+), 62 deletions(-) diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp index 67905a851..1c0e11e44 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_device_stub.cpp @@ -117,11 +117,11 @@ void WifiDeviceStub::OnInitWifiProtect(uint32_t code, MessageParcel &data, Messa WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; WifiProtectType protectType = (WifiProtectType)data.ReadInt32(); - const char *protectName = data.ReadCString(); - if (protectName == nullptr) { + const char *readStr = data.ReadCString(); + if (readStr == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string protectName = protectName; + std::string protectName = readStr; ret = InitWifiProtect(protectType, protectName); } reply.WriteInt32(0); @@ -134,11 +134,11 @@ void WifiDeviceStub::OnGetWifiProtectRef(uint32_t code, MessageParcel &data, Mes WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; WifiProtectMode protectMode = (WifiProtectMode)data.ReadInt32(); - const char *protectName = data.ReadCString(); - if (protectName == nullptr) { + const char *readStr = data.ReadCString(); + if (readStr == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string protectName = protectName; + std::string protectName = readStr; ret = GetWifiProtectRef(protectMode, protectName); } reply.WriteInt32(0); @@ -150,11 +150,11 @@ void WifiDeviceStub::OnPutWifiProtectRef(uint32_t code, MessageParcel &data, Mes { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; - const char *protectName = data.ReadCString(); - if (protectName == nullptr) { + const char *readStr = data.ReadCString(); + if (readStr == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string protectName = protectName; + std::string protectName = readStr; ret = PutWifiProtectRef(protectName); } reply.WriteInt32(0); @@ -448,13 +448,13 @@ void WifiDeviceStub::OnStartWps(uint32_t code, MessageParcel &data, MessageParce ErrCode ret = WIFI_OPT_FAILED; WpsConfig config; config.setup = SetupMethod(data.ReadInt32()); - const char *pin = data.ReadCString(); - const char *bssid = data.ReadCString(); - if (pin == nullptr || bssid == nullptr) { + const char *pinRead = data.ReadCString(); + const char *bssidRead = data.ReadCString(); + if (pinRead == nullptr || bssidRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - config.pin = pin; - config.bssid = bssid; + config.pin = pinRead; + config.bssid = bssidRead; ret = StartWps(config); } @@ -558,11 +558,11 @@ void WifiDeviceStub::OnSetCountryCode(uint32_t code, MessageParcel &data, Messag { WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; - const char *countrycode = data.ReadCString(); - if (countrycode == nullptr) { + const char *countryCodeRead = data.ReadCString(); + if (countryCodeRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string countrycode = countrycode; + std::string countrycode = countryCodeRead; ret = SetCountryCode(countrycode); } reply.WriteInt32(0); diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp index bf85f8484..3a114caa8 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_hotspot_stub.cpp @@ -127,17 +127,17 @@ void WifiHotspotStub::OnSetApConfigWifi(uint32_t code, MessageParcel &data, Mess WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; HotspotConfig config; - const char *ssid = data.ReadCString(); + const char *ssidRead = data.ReadCString(); config.SetSecurityType(static_cast(data.ReadInt32())); config.SetBand(static_cast(data.ReadInt32())); config.SetChannel(data.ReadInt32()); - const char *preSharedKey = data.ReadCString(); + const char *preSharedKeyRead = data.ReadCString(); config.SetMaxConn(data.ReadInt32()); - if (ssid == nullptr || preSharedKey == nullptr) { + if (ssidRead == nullptr || preSharedKeyRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - config.SetSsid(ssid); - config.SetPreSharedKey(preSharedKey); + config.SetSsid(ssidRead); + config.SetPreSharedKey(preSharedKeyRead); ret = SetHotspotConfig(config); } reply.WriteInt32(0); @@ -172,15 +172,15 @@ void WifiHotspotStub::OnDisassociateSta(uint32_t code, MessageParcel &data, Mess WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - const char *deviceName = data.ReadCString(); - const char *bssid = data.ReadCString(); - const char *ipAddr = data.ReadCString(); - if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + const char *deviceNameRead = data.ReadCString(); + const char *bssidRead = data.ReadCString(); + const char *ipAddrRead = data.ReadCString(); + if (deviceNameRead == nullptr || bssidRead == nullptr || ipAddrRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - info.deviceName = deviceName; - info.bssid = bssid; - info.ipAddr = ipAddr; + info.deviceName = deviceNameRead; + info.bssid = bssidRead; + info.ipAddr = ipAddrRead; ret = DisassociateSta(info); } reply.WriteInt32(0); @@ -251,15 +251,15 @@ void WifiHotspotStub::OnAddBlockList(uint32_t code, MessageParcel &data, Message WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - const char *deviceName = data.ReadCString(); - const char *bssid = data.ReadCString(); - const char *ipAddr = data.ReadCString(); - if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + const char *deviceNameRead = data.ReadCString(); + const char *bssidRead = data.ReadCString(); + const char *ipAddrRead = data.ReadCString(); + if (deviceNameRead == nullptr || bssidRead == nullptr || ipAddrRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - info.deviceName = deviceName; - info.bssid = bssid; - info.ipAddr = ipAddr; + info.deviceName = deviceNameRead; + info.bssid = bssidRead; + info.ipAddr = ipAddrRead; ret = AddBlockList(info); } reply.WriteInt32(0); @@ -273,15 +273,15 @@ void WifiHotspotStub::OnDelBlockList(uint32_t code, MessageParcel &data, Message WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; StationInfo info; - const char *deviceName = data.ReadCString(); - const char *bssid = data.ReadCString(); - const char *ipAddr = data.ReadCString(); - if (deviceName == nullptr || bssid == nullptr || ipAddr == nullptr) { + const char *deviceNameRead = data.ReadCString(); + const char *bssidRead = data.ReadCString(); + const char *ipAddrRead = data.ReadCString(); + if (deviceNameRead == nullptr || bssidRead == nullptr || ipAddrRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - info.deviceName = deviceName; - info.bssid = bssid; - info.ipAddr = ipAddr; + info.deviceName = deviceNameRead; + info.bssid = bssidRead; + info.ipAddr = ipAddrRead; ret = DelBlockList(info); } reply.WriteInt32(0); diff --git a/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp b/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp index ee624c527..6ab1fd644 100644 --- a/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp +++ b/services/wifi_standard/wifi_framework/wifi_manage/wifi_p2p_stub.cpp @@ -730,15 +730,15 @@ void WifiP2pStub::OnHid2dConnect(uint32_t code, MessageParcel &data, ErrCode ret = WIFI_OPT_FAILED; Hid2dConnectConfig config; - const char *ssid = data.ReadCString(); - const char *bssid = data.ReadCString(); - const char *preSharedKey = data.ReadCString(); - if (ssid == nullptr || bssid == nullptr || preSharedKey == nullptr) { + const char *ssidRead = data.ReadCString(); + const char *bssidRead = data.ReadCString(); + const char *preSharedKeyRead = data.ReadCString(); + if (ssidRead == nullptr || bssidRead == nullptr || preSharedKeyRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - config.SetSsid(ssid); - config.SetBssid(bssid); - config.SetPreSharedKey(preSharedKey); + config.SetSsid(ssidRead); + config.SetBssid(bssidRead); + config.SetPreSharedKey(preSharedKeyRead); config.SetFrequency(data.ReadInt32()); config.SetDhcpMode(DhcpMode(data.ReadInt32())); @@ -756,17 +756,17 @@ void WifiP2pStub::OnHid2dConfigIPAddr(uint32_t code, MessageParcel &data, ErrCode ret = WIFI_OPT_FAILED; IpAddrInfo ipInfo; - const char *ifName = data.ReadCString(); - const char *ip = data.ReadCString(); - const char *gateway = data.ReadCString(); - const char *netmask = data.ReadCString(); - if (ifName == nullptr || ip == nullptr || gateway == nullptr || netmask == nullptr) { + const char *ifNameRead = data.ReadCString(); + const char *ipRead = data.ReadCString(); + const char *gatewayRead = data.ReadCString(); + const char *netmaskRead = data.ReadCString(); + if (ifNameRead == nullptr || ipRead == nullptr || gatewayRead == nullptr || netmaskRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string ifName = ifName; - ipInfo.ip = ip; - ipInfo.gateway = gateway; - ipInfo.netmask = netmask; + std::string ifName = ifNameRead; + ipInfo.ip = ipRead; + ipInfo.gateway = gatewayRead; + ipInfo.netmask = netmaskRead; ret = Hid2dConfigIPAddr(ifName, ipInfo); } reply.WriteInt32(0); @@ -779,11 +779,11 @@ void WifiP2pStub::OnHid2dReleaseIPAddr(uint32_t code, MessageParcel &data, WIFI_LOGD("run %{public}s code %{public}u, datasize %{public}zu", __func__, code, data.GetRawDataSize()); ErrCode ret = WIFI_OPT_FAILED; - const char *ifName = data.ReadCString(); - if (ifName == nullptr) { + const char *ifNameRead = data.ReadCString(); + if (ifNameRead == nullptr) { ret = WIFI_OPT_INVALID_PARAM; } else { - std::string ifName = ifName; + std::string ifName = ifNameRead; ret = Hid2dReleaseIPAddr(ifName); } reply.WriteInt32(0); @@ -878,6 +878,7 @@ void WifiP2pStub::OnHid2dSetPeerWifiCfgInfo( reply.WriteInt32(ret); } + bool WifiP2pStub::IsSingleCallback() const { return mSingleCallback; -- Gitee From f7dd2229e5916d96dce4d7444ec4ed426beaed4e Mon Sep 17 00:00:00 2001 From: xiaosi Date: Sat, 26 Nov 2022 10:37:59 +0800 Subject: [PATCH 3/3] fix ReadCString Signed-off-by: xiaosi --- .../native_cpp/wifi_standard/src/wifi_scan_proxy.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp index 98838d2d9..aa9dc4048 100755 --- a/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp +++ b/interfaces/innerkits/native_cpp/wifi_standard/src/wifi_scan_proxy.cpp @@ -226,9 +226,9 @@ ErrCode WifiScanProxy::GetScanInfoList(std::vector &result) WifiScanInfo info; readStr = reply.ReadCString(); info.bssid = (readStr != nullptr) ? readStr : ""; - reply.ReadCString(); + readStr = reply.ReadCString(); info.ssid = (readStr != nullptr) ? readStr : ""; - reply.ReadCString(); + readStr = reply.ReadCString(); info.capabilities = (readStr != nullptr) ? readStr : ""; info.frequency = reply.ReadInt32(); info.rssi = reply.ReadInt32(); -- Gitee