From 2e931e58ed25332a13f26bcc30401c0779afc7b9 Mon Sep 17 00:00:00 2001 From: "wenyong.yang" Date: Tue, 27 Jun 2023 16:33:29 +0800 Subject: [PATCH 1/3] add fuzz case Change-Id: If23ac483636a5bd59f5e984d96b698d73d61609f Signed-off-by: wenyong.yang --- .../net_sys_client_fuzzer.cpp | 240 +++++++++++++++++- 1 file changed, 239 insertions(+), 1 deletion(-) diff --git a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp index db2fd14b9..3c096f00d 100644 --- a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp +++ b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp @@ -96,6 +96,14 @@ bool WriteInterfaceToken(MessageParcel &data) return true; } +bool WriteInterfaceTokenCallback(MessageParcel &data) +{ + if (!data.WriteInterfaceToken(NetsysNative::NotifyCallbackStub::GetDescriptor())) { + return false; + } + return true; +} + class INetSysCallbackTest : public NetsysNative::NotifyCallbackStub { public: INetSysCallbackTest() : NotifyCallbackStub() {} @@ -1528,6 +1536,227 @@ void SetIptablesCommandForResFuzzTest(const uint8_t *data, size_t size) OnRemoteRequest(NetsysNative::INetsysService::NETSYS_SET_IPTABLES_CMD_FOR_RES, dataParcel); } + +void OnInterfaceAddressUpdatedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string addr = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + int32_t flags = GetData(); + int32_t scope = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(addr); + dataParcel.WriteString(ifName); + dataParcel.WriteInt32(flags); + dataParcel.WriteInt32(scope); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDRESS_UPDATED, dataParcel); +} + +void OnInterfaceAddressRemovedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string addr = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + int32_t flags = GetData(); + int32_t scope = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(addr); + dataParcel.WriteString(ifName); + dataParcel.WriteInt32(flags); + dataParcel.WriteInt32(scope); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDRESS_REMOVED, dataParcel); +} + + +void OnInterfaceAddedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDED, dataParcel); +} + +void OnInterfaceRemovedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_REMOVED, dataParcel); +} + + +void OnInterfaceChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + bool up = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + dataParcel.WriteBool(up); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_CHANGED, dataParcel); +} + +void OnInterfaceLinkStateChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + bool up = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + dataParcel.WriteBool(up); + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_LINK_STATE_CHANGED, dataParcel); +} + +void OnRouteChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + bool updated = GetData(); + std::string route = GetStringFromData(STR_LEN); + std::string gateway = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteBool(updated); + dataParcel.WriteString(route); + dataParcel.WriteString(gateway); + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_ROUTE_CHANGED, dataParcel); +} + +void OnDhcpSuccessFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + bool updated = GetData(); + std::string route = GetStringFromData(STR_LEN); + std::string gateway = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteBool(updated); + dataParcel.WriteString(route); + dataParcel.WriteString(gateway); + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_DHCP_SUCCESS, dataParcel); +} + + +void OnBandwidthReachedLimitFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string limitName = GetStringFromData(STR_LEN); + std::string iface = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(limitName); + dataParcel.WriteString(iface); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_BANDWIDTH_REACHED_LIMIT, dataParcel); +} } // namespace NetManagerStandard } // namespace OHOS @@ -1559,6 +1788,15 @@ void LLVMFuzzerTestOneInputNew(const uint8_t *data, size_t size) OHOS::NetManagerStandard::BandwidthRemoveAllowedListFuzzTest(data, size); OHOS::NetManagerStandard::FirewallEnableChainFuzzTest(data, size); OHOS::NetManagerStandard::GetNetworkSharingTrafficFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddressUpdatedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddressRemovedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceRemovedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceLinkStateChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnRouteChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnDhcpSuccessFuzzTest(data, size); + OHOS::NetManagerStandard::OnBandwidthReachedLimitFuzzTest(data, size); } extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) @@ -1580,7 +1818,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::NetManagerStandard::DestroyNetworkCacheFuzzTest(data, size); OHOS::NetManagerStandard::InterfaceGetListFuzzTest(data, size); OHOS::NetManagerStandard::ShareDnsSetFuzzTest(data, size); - //OHOS::NetManagerStandard::StartDnsProxyListenFuzzTest(data, size); + OHOS::NetManagerStandard::StartDnsProxyListenFuzzTest(data, size); OHOS::NetManagerStandard::StopDnsProxyListenFuzzTest(data, size); OHOS::NetManagerStandard::StartDhcpClientFuzzTest(data, size); OHOS::NetManagerStandard::StopDhcpClientFuzzTest(data, size); -- Gitee From 09cdc815b3d17348fc0f90f56ea69a5284872c50 Mon Sep 17 00:00:00 2001 From: xujie Date: Tue, 27 Jun 2023 16:40:42 +0800 Subject: [PATCH 2/3] add fuzz Change-Id: Ibd763000301186ed7eff3797b55269e1b85fb7b0 Signed-off-by: xujie --- .../net_sys_client_fuzzer.cpp | 240 +++++++++++++++++- 1 file changed, 239 insertions(+), 1 deletion(-) diff --git a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp index db2fd14b9..3c096f00d 100644 --- a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp +++ b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp @@ -96,6 +96,14 @@ bool WriteInterfaceToken(MessageParcel &data) return true; } +bool WriteInterfaceTokenCallback(MessageParcel &data) +{ + if (!data.WriteInterfaceToken(NetsysNative::NotifyCallbackStub::GetDescriptor())) { + return false; + } + return true; +} + class INetSysCallbackTest : public NetsysNative::NotifyCallbackStub { public: INetSysCallbackTest() : NotifyCallbackStub() {} @@ -1528,6 +1536,227 @@ void SetIptablesCommandForResFuzzTest(const uint8_t *data, size_t size) OnRemoteRequest(NetsysNative::INetsysService::NETSYS_SET_IPTABLES_CMD_FOR_RES, dataParcel); } + +void OnInterfaceAddressUpdatedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string addr = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + int32_t flags = GetData(); + int32_t scope = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(addr); + dataParcel.WriteString(ifName); + dataParcel.WriteInt32(flags); + dataParcel.WriteInt32(scope); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDRESS_UPDATED, dataParcel); +} + +void OnInterfaceAddressRemovedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string addr = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + int32_t flags = GetData(); + int32_t scope = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(addr); + dataParcel.WriteString(ifName); + dataParcel.WriteInt32(flags); + dataParcel.WriteInt32(scope); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDRESS_REMOVED, dataParcel); +} + + +void OnInterfaceAddedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDED, dataParcel); +} + +void OnInterfaceRemovedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_REMOVED, dataParcel); +} + + +void OnInterfaceChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + bool up = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + dataParcel.WriteBool(up); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_CHANGED, dataParcel); +} + +void OnInterfaceLinkStateChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string ifName = GetStringFromData(STR_LEN); + bool up = GetData(); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(ifName); + dataParcel.WriteBool(up); + OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_LINK_STATE_CHANGED, dataParcel); +} + +void OnRouteChangedFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + bool updated = GetData(); + std::string route = GetStringFromData(STR_LEN); + std::string gateway = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteBool(updated); + dataParcel.WriteString(route); + dataParcel.WriteString(gateway); + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_ROUTE_CHANGED, dataParcel); +} + +void OnDhcpSuccessFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + bool updated = GetData(); + std::string route = GetStringFromData(STR_LEN); + std::string gateway = GetStringFromData(STR_LEN); + std::string ifName = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteBool(updated); + dataParcel.WriteString(route); + dataParcel.WriteString(gateway); + dataParcel.WriteString(ifName); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_DHCP_SUCCESS, dataParcel); +} + + +void OnBandwidthReachedLimitFuzzTest(const uint8_t *data, size_t size) +{ + if ((data == nullptr) || (size == 0)) { + return; + } + g_baseFuzzData = data; + g_baseFuzzSize = size; + g_baseFuzzPos = 0; + + std::string limitName = GetStringFromData(STR_LEN); + std::string iface = GetStringFromData(STR_LEN); + + MessageParcel dataParcel; + if (!WriteInterfaceTokenCallback(dataParcel)) { + return; + } + + dataParcel.WriteString(limitName); + dataParcel.WriteString(iface); + + OnRemoteRequest(NetsysNative::INotifyCallback::ON_BANDWIDTH_REACHED_LIMIT, dataParcel); +} } // namespace NetManagerStandard } // namespace OHOS @@ -1559,6 +1788,15 @@ void LLVMFuzzerTestOneInputNew(const uint8_t *data, size_t size) OHOS::NetManagerStandard::BandwidthRemoveAllowedListFuzzTest(data, size); OHOS::NetManagerStandard::FirewallEnableChainFuzzTest(data, size); OHOS::NetManagerStandard::GetNetworkSharingTrafficFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddressUpdatedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddressRemovedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceAddedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceRemovedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnInterfaceLinkStateChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnRouteChangedFuzzTest(data, size); + OHOS::NetManagerStandard::OnDhcpSuccessFuzzTest(data, size); + OHOS::NetManagerStandard::OnBandwidthReachedLimitFuzzTest(data, size); } extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) @@ -1580,7 +1818,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::NetManagerStandard::DestroyNetworkCacheFuzzTest(data, size); OHOS::NetManagerStandard::InterfaceGetListFuzzTest(data, size); OHOS::NetManagerStandard::ShareDnsSetFuzzTest(data, size); - //OHOS::NetManagerStandard::StartDnsProxyListenFuzzTest(data, size); + OHOS::NetManagerStandard::StartDnsProxyListenFuzzTest(data, size); OHOS::NetManagerStandard::StopDnsProxyListenFuzzTest(data, size); OHOS::NetManagerStandard::StartDhcpClientFuzzTest(data, size); OHOS::NetManagerStandard::StopDhcpClientFuzzTest(data, size); -- Gitee From 57ca57c51c1fd6488f8303a1a3a5621109dee7a7 Mon Sep 17 00:00:00 2001 From: xujie Date: Wed, 28 Jun 2023 16:00:48 +0800 Subject: [PATCH 3/3] add fuzz Change-Id: Ic4118f5da714a8cac65c77136b5c8106c681bb07 Signed-off-by: xujie --- test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp index 3c096f00d..cc80fc8dd 100644 --- a/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp +++ b/test/fuzztest/netsysclient_fuzzer/net_sys_client_fuzzer.cpp @@ -1560,7 +1560,6 @@ void OnInterfaceAddressUpdatedFuzzTest(const uint8_t *data, size_t size) dataParcel.WriteString(ifName); dataParcel.WriteInt32(flags); dataParcel.WriteInt32(scope); - OnRemoteRequest(NetsysNative::INotifyCallback::ON_INTERFACE_ADDRESS_UPDATED, dataParcel); } -- Gitee