From 4bd8cf784f10c16f73e3a0349142faaca0950fd8 Mon Sep 17 00:00:00 2001 From: dl Date: Fri, 25 Mar 2022 09:53:53 +0800 Subject: [PATCH 1/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- bundle.json | 5 +- .../test/fuzztest/BUILD.gn | 18 ++++ .../test_AccessManager_fuzzer/BUILD.gn | 69 ++++++++++++ .../test_AccessManager_fuzzer/corpus/init | 1 + .../test_AccessManager_fuzzer/project.xml | 25 +++++ .../test_AccessManager_fuzzer.cpp | 57 ++++++++++ .../test_AccessManager_fuzzer.h | 24 +++++ .../test/fuzztest/BUILD.gn | 21 ++++ .../test_ComponentManager_fuzzer/BUILD.gn | 58 ++++++++++ .../test_ComponentManager_fuzzer/corpus/init | 1 + .../test_ComponentManager_fuzzer/project.xml | 25 +++++ .../test_ComponentManager_fuzzer.cpp | 58 ++++++++++ .../test_ComponentManager_fuzzer.h | 24 +++++ .../test_ResourceManager_fuzzer/BUILD.gn | 67 ++++++++++++ .../test_ResourceManager_fuzzer/corpus/init | 1 + .../test_ResourceManager_fuzzer/project.xml | 25 +++++ .../test_ResourceManager_fuzzer.cpp | 102 ++++++++++++++++++ .../test_ResourceManager_fuzzer.h | 24 +++++ utils/test/fuzztest/BUILD.gn | 18 ++++ .../test/fuzztest/test_Utils_fuzzer/BUILD.gn | 43 ++++++++ .../fuzztest/test_Utils_fuzzer/corpus/init | 1 + .../fuzztest/test_Utils_fuzzer/project.xml | 25 +++++ .../test_Utils_fuzzer/test_Utils_fuzzer.cpp | 54 ++++++++++ .../test_Utils_fuzzer/test_Utils_fuzzer.h | 24 +++++ 24 files changed, 769 insertions(+), 1 deletion(-) create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp create mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp create mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h create mode 100644 utils/test/fuzztest/BUILD.gn create mode 100644 utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn create mode 100644 utils/test/fuzztest/test_Utils_fuzzer/corpus/init create mode 100644 utils/test/fuzztest/test_Utils_fuzzer/project.xml create mode 100644 utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp create mode 100644 utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h diff --git a/bundle.json b/bundle.json index dce07b82..d0640836 100644 --- a/bundle.json +++ b/bundle.json @@ -47,7 +47,10 @@ "test": [ "//foundation/distributedhardware/distributedhardwarefwk/utils/test/unittest:utils_test", "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl/test/unittest:svrimpl_test", - "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkservice/test/unittest:test" + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl/test/fuzztest:fuzztest", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkservice/test/unittest:test", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkservice/test/fuzztest:fuzztest", + "//foundation/distributedhardware/distributedhardwarefwk/utils/test/fuzztest:fuzztest" ] } } diff --git a/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn new file mode 100644 index 00000000..0ec6525c --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn @@ -0,0 +1,18 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +group("fuzztest") { + testonly = true + + deps = [ "test_AccessManager_fuzzer:fuzztest", ] +} diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn new file mode 100644 index 00000000..743157d5 --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn @@ -0,0 +1,69 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") + +##############################fuzztest########################################## +ohos_fuzztest("test_AccessManager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_AccessManager_fuzzer" + + include_dirs = [ + "//utils/native/base/include", + "//utils/system/safwk/native/include", + "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp/include", + "//foundation/distributedhardware/devicemanager/common/include", + "${utils_path}/include", + "${utils_path}/include/log", + "${common_path}/utils/include", + "${common_path}/log/include", + "${services_path}/distributedhardwarefwkservice/include", + "${services_path}/distributedhardwarefwkservice/include/accessmanager", + ] + cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] + sources = [ + "test_AccessManager_fuzzer.cpp", + ] + + deps = [ + "${utils_path}:distributedhardwareutils", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkservice:distributedhardwarefwksvr", + "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", + "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp:devicemanagersdk", + ] + + defines = [ + "HI_LOG_ENABLE", + "DH_LOG_TAG=\"test_AccessManager_fuzzer\"", + "LOG_DOMAIN=0xD004100", + ] + + external_deps = [ + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "ipc:ipc_core", + "safwk:system_ability_fwk", + "samgr_standard:samgr_proxy", + "startup_l2:syspara", + ] +} +############################################################################### +group("fuzztest") { + testonly = true + + deps = [ ":test_AccessManager_fuzzer" ] + +} +############################################################################### diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init new file mode 100644 index 00000000..6b7212c8 --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init @@ -0,0 +1 @@ +FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml new file mode 100644 index 00000000..85e7ef2c --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp new file mode 100644 index 00000000..0bf3b6b1 --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "test_AccessManager_fuzzer.h" + +#include +#include +#include +#include +#include +#include + +#include "access_manager.h" +#include "distributed_hardware_errno.h" +#include "distributed_hardware_manager_factory.h" + +namespace OHOS { +namespace DistributedHardware { +constexpr uint16_t TEST_DEV_TYPE_PAD = 0x11; +constexpr uint16_t STR_LEN = 32; + +bool AccessManagerFuzzTest(const uint8_t* data, size_t size) +{ + if (size > (STR_LEN * 2)) { + std::string networkId(reinterpret_cast(data), STR_LEN); + std::string uuid(reinterpret_cast(data + STR_LEN), STR_LEN); + + DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent( + networkId, uuid, TEST_DEV_TYPE_PAD); + return true; + } else { + return false; + } +} +} +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + /* Run your code on data */ + OHOS::DistributedHardware::AccessManagerFuzzTest(data, size); + return 0; +} + diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h new file mode 100644 index 00000000..8b53c031 --- /dev/null +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#define FUZZ_PROJECT_NAME "test_AccessManager_fuzzer" + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn new file mode 100644 index 00000000..12fece32 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn @@ -0,0 +1,21 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +group("fuzztest") { + testonly = true + + deps = [ + "test_ComponentManager_fuzzer:fuzztest", + "test_ResourceManager_fuzzer:fuzztest" + ] +} diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn new file mode 100644 index 00000000..02bf0bd5 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn @@ -0,0 +1,58 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") + +##############################fuzztest########################################## +ohos_fuzztest("test_ComponentManager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_ComponentManager_fuzzer" + + include_dirs = [ + "${utils_path}/include", + "${utils_path}/include/log", + "${services_path}/distributedhardwarefwkserviceimpl/include", + "${services_path}/distributedhardwarefwkserviceimpl/include/componentmanager", + "${services_path}/distributedhardwarefwkserviceimpl/include/utils", + "${common_path}/utils/include", + "${common_path}/log/include", + "//utils/native/base/include", + ] + cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] + sources = [ + "test_ComponentManager_fuzzer.cpp", + ] + + deps = [ + "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl" + ] + + defines = [ + "HI_LOG_ENABLE", + "DH_LOG_TAG=\"test_ComponentManager_fuzzer\"", + "LOG_DOMAIN=0xD004100", + ] + + external_deps = [ + "ipc:ipc_core", + ] +} +############################################################################### +group("fuzztest") { + testonly = true + deps = [ ":test_ComponentManager_fuzzer" ] +} +############################################################################### diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init new file mode 100644 index 00000000..6b7212c8 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init @@ -0,0 +1 @@ +FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml new file mode 100644 index 00000000..85e7ef2c --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp new file mode 100644 index 00000000..12aa7335 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "test_ComponentManager_fuzzer.h" + +#include +#include + +#include "component_disable.h" +#include "component_enable.h" +#include "component_manager.h" +#include "constants.h" +#include "distributed_hardware_errno.h" +#include "distributed_hardware_log.h" + +namespace OHOS { +namespace DistributedHardware { +constexpr uint16_t STR_LEN = 32; + +bool ComponentManagerFuzzTest(const uint8_t* data, size_t size) +{ + if (size > (STR_LEN * 3)) { + std::string networkId(reinterpret_cast(data), STR_LEN); + std::string uuid(reinterpret_cast(data + STR_LEN), STR_LEN); + std::string dhId(reinterpret_cast(data + STR_LEN * 2), STR_LEN); + + ComponentManager::GetInstance().Init(); + ComponentManager::GetInstance().Enable(networkId, uuid, dhId); + ComponentManager::GetInstance().Disable(networkId, uuid, dhId); + ComponentManager::GetInstance().UnInit(); + return true; + } else { + return false; + } +} +} +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + /* Run your code on data */ + OHOS::DistributedHardware::ComponentManagerFuzzTest(data, size); + return 0; +} + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h new file mode 100644 index 00000000..1d8391e7 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#define FUZZ_PROJECT_NAME "test_ComponentManager_fuzzer" + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn new file mode 100644 index 00000000..1c137120 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn @@ -0,0 +1,67 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") + +##############################fuzztest########################################## +ohos_fuzztest("test_ResourceManager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_ResourceManager_fuzzer" + + include_dirs = [ + "${utils_path}/include", + "${utils_path}/include/log", + "${utils_path}/include/eventbus", + "${services_path}/distributedhardwarefwkserviceimpl/include", + "${services_path}/distributedhardwarefwkserviceimpl/include/resourcemanager", + "${services_path}/distributedhardwarefwkserviceimpl/include/utils", + "${common_path}/utils/include", + "${common_path}/log/include", + "//utils/native/base/include", + "//third_party/json/include", + "//utils/native/base/include", + "//utils/system/safwk/native/include" + ] + cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] + sources = [ + "test_ResourceManager_fuzzer.cpp", + ] + + deps = [ + "//utils/native/base:utils", + "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl" + ] + + defines = [ + "HI_LOG_ENABLE", + "DH_LOG_TAG=\"test_ResourceManager_fuzzer\"", + "LOG_DOMAIN=0xD004100", + ] + + external_deps = [ + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "eventhandler:libeventhandler", + "hiviewdfx_hilog_native:libhilog", + "distributeddatamgr:distributeddata_inner" + ] +} +############################################################################### +group("fuzztest") { + testonly = true + deps = [ ":test_ResourceManager_fuzzer" ] +} +############################################################################### diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init new file mode 100644 index 00000000..6b7212c8 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init @@ -0,0 +1 @@ +FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml new file mode 100644 index 00000000..85e7ef2c --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp new file mode 100644 index 00000000..b628f355 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "test_ResourceManager_fuzzer.h" + +#include +#include +#include +#include + +#include "capability_info.h" +#include "capability_info_manager.h" +#include "dh_context.h" +#include "distributed_hardware_errno.h" +#include "distributed_hardware_log.h" + +namespace OHOS { +namespace DistributedHardware { +constexpr uint16_t TEST_SIZE = 2; +constexpr uint16_t STR_LEN = 32; +constexpr uint16_t DHTYPE_SIZE = 5; +const DHType dhTypeFuzz[DHTYPE_SIZE] = { + DHType::CAMERA, DHType::MIC, DHType::SPEAKER, DHType::DISPLAY, DHType::BUTTON +}; + +struct CapabilityInfoFuzz { + char dhId_[STR_LEN]; + char deviceId_[STR_LEN]; + char deviceName_[STR_LEN]; + uint16_t deviceType_; + uint8_t dhType_; + char dhAttrs_[STR_LEN]; +}; + +void CreateCapabilityInfo(const uint8_t* data, std::shared_ptr &capInfo) +{ + const CapabilityInfoFuzz *capInfoFuzz = + reinterpret_cast(data); + + std::string dhId(capInfoFuzz->dhId_); + std::string devId(capInfoFuzz->deviceId_); + std::string devName(capInfoFuzz->deviceName_); + uint16_t devType = capInfoFuzz->deviceType_; + DHType dhType = dhTypeFuzz[capInfoFuzz->dhType_ % DHTYPE_SIZE]; + std::string dhAttrs(capInfoFuzz->dhAttrs_); + + capInfo = std::make_shared(dhId, devId, devName, devType, dhType, dhAttrs); +} + +bool ResourceManagerFuzzTest(const uint8_t* data, size_t size) +{ + if (size > sizeof(CapabilityInfoFuzz) * TEST_SIZE) { + std::shared_ptr capInfo1; + std::shared_ptr capInfo2; + std::vector> resInfos; + + CreateCapabilityInfo(data, capInfo1); + CreateCapabilityInfo(data + sizeof(CapabilityInfoFuzz), capInfo2); + resInfos.emplace_back(capInfo1); + resInfos.emplace_back(capInfo2); + CapabilityInfoManager::GetInstance()->AddCapability(resInfos); + + std::shared_ptr info; + CapabilityInfoManager::GetInstance()->GetCapability(capInfo1->GetDeviceId(), capInfo1->GetDHId(), info); + CapabilityInfoManager::GetInstance()->GetCapability(capInfo2->GetDeviceId(), capInfo2->GetDHId(), info); + CapabilityInfoManager::GetInstance()->GetDataByKey(capInfo1->GetKey(), info); + CapabilityInfoManager::GetInstance()->GetDataByKey(capInfo2->GetKey(), info); + + CapabilityInfoMap capMap; + CapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(capInfo1->GetDeviceId(), capMap); + CapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(capInfo1->GetDeviceId(), capMap); + + CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capInfo1->GetKey()); + CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capInfo2->GetKey()); + return true; + } else { + return false; + } +} +} +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + /* Run your code on data */ + OHOS::DistributedHardware::ResourceManagerFuzzTest(data, size); + return 0; +} + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h new file mode 100644 index 00000000..32b39bf1 --- /dev/null +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#define FUZZ_PROJECT_NAME "test_ResourceManager_fuzzer" + diff --git a/utils/test/fuzztest/BUILD.gn b/utils/test/fuzztest/BUILD.gn new file mode 100644 index 00000000..bcc2a768 --- /dev/null +++ b/utils/test/fuzztest/BUILD.gn @@ -0,0 +1,18 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +group("fuzztest") { + testonly = true + + deps = [ "test_Utils_fuzzer:fuzztest", ] +} diff --git a/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn b/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn new file mode 100644 index 00000000..1b3d2342 --- /dev/null +++ b/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn @@ -0,0 +1,43 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") + +##############################fuzztest########################################## +ohos_fuzztest("test_Utils_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_Utils_fuzzer" + + include_dirs = [ + "${utils_path}/include", + "${utils_path}/include/log", + "${common_path}/utils/include", + "//utils/native/base/include", + ] + cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] + sources = [ + "test_Utils_fuzzer.cpp", + ] + + deps = [ + "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils" + ] +} +############################################################################### +group("fuzztest") { + testonly = true + deps = [ ":test_Utils_fuzzer", ] +} +############################################################################### diff --git a/utils/test/fuzztest/test_Utils_fuzzer/corpus/init b/utils/test/fuzztest/test_Utils_fuzzer/corpus/init new file mode 100644 index 00000000..6b7212c8 --- /dev/null +++ b/utils/test/fuzztest/test_Utils_fuzzer/corpus/init @@ -0,0 +1 @@ +FUZZ \ No newline at end of file diff --git a/utils/test/fuzztest/test_Utils_fuzzer/project.xml b/utils/test/fuzztest/test_Utils_fuzzer/project.xml new file mode 100644 index 00000000..85e7ef2c --- /dev/null +++ b/utils/test/fuzztest/test_Utils_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp new file mode 100644 index 00000000..c59f4424 --- /dev/null +++ b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "test_Utils_fuzzer.h" + +#include +#include + +#include "anonymous_string.h" +#include "dh_utils_tool.h" + + +namespace OHOS { +namespace DistributedHardware { +constexpr uint16_t STR_LEN = 32; + +bool UtilsFuzzerTet(const uint8_t* data, size_t size) +{ + if (size > STR_LEN) { + std::string str1(reinterpret_cast(data), STR_LEN); + std::string anonyStr1 = GetAnonyString(str1); + + std::string str2(reinterpret_cast(data), (*data) % STR_LEN); + std::string anonyStr2 = GetAnonyString(str2); + + int32_t i = *(reinterpret_cast(data)); + std::string anonyStri = GetAnonyInt32(i); + return true; + } + return false; +} +} +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + /* Run your code on data */ + OHOS::DistributedHardware::UtilsFuzzerTet(data, size); + return 0; +} + diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h new file mode 100644 index 00000000..6f07d777 --- /dev/null +++ b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +#define FUZZ_PROJECT_NAME "test_Utils_fuzzer" + -- Gitee From fa4ed852242904abcd072c1bca1f7a386afa8e28 Mon Sep 17 00:00:00 2001 From: dl Date: Fri, 25 Mar 2022 11:30:44 +0800 Subject: [PATCH 2/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- .../test/fuzztest/BUILD.gn | 2 +- .../fuzztest/test_AccessManager_fuzzer/corpus/init | 1 - .../test_AccessManager_fuzzer.cpp | 5 ++--- .../test_AccessManager_fuzzer.h | 10 ++++------ .../fuzztest/test_ComponentManager_fuzzer/corpus/init | 1 - .../test_ComponentManager_fuzzer.cpp | 4 ++-- .../test_ComponentManager_fuzzer.h | 9 +++------ .../fuzztest/test_ResourceManager_fuzzer/corpus/init | 1 - .../test_ResourceManager_fuzzer.cpp | 4 ++-- .../test_ResourceManager_fuzzer.h | 9 +++------ utils/test/fuzztest/test_Utils_fuzzer/corpus/init | 1 - .../fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h | 9 +++------ 12 files changed, 20 insertions(+), 36 deletions(-) delete mode 100644 services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init delete mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init delete mode 100644 services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init delete mode 100644 utils/test/fuzztest/test_Utils_fuzzer/corpus/init diff --git a/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn index 0ec6525c..327c179b 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn @@ -14,5 +14,5 @@ group("fuzztest") { testonly = true - deps = [ "test_AccessManager_fuzzer:fuzztest", ] + deps = [ "test_AccessManager_fuzzer:fuzztest" ] } diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init deleted file mode 100644 index 6b7212c8..00000000 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/corpus/init +++ /dev/null @@ -1 +0,0 @@ -FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp index 0bf3b6b1..537a9428 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp @@ -17,10 +17,9 @@ #include #include -#include -#include +#include +#include #include -#include #include "access_manager.h" #include "distributed_hardware_errno.h" diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h index 8b53c031..48989de0 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h @@ -13,12 +13,10 @@ * limitations under the License. */ -#include -#include -#include -#include -#include -#include +#ifndef TEST_ACCESSMANAGER_FUZZER_H +#define TEST_ACCESSMANAGER_FUZZER_H #define FUZZ_PROJECT_NAME "test_AccessManager_fuzzer" +#endif + diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init deleted file mode 100644 index 6b7212c8..00000000 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/corpus/init +++ /dev/null @@ -1 +0,0 @@ -FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp index 12aa7335..ce8dfeaa 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp @@ -15,8 +15,8 @@ #include "test_ComponentManager_fuzzer.h" -#include -#include +#include +#include #include "component_disable.h" #include "component_enable.h" diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h index 1d8391e7..70cfc79d 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h @@ -13,12 +13,9 @@ * limitations under the License. */ -#include -#include -#include -#include -#include -#include +#ifndef TEST_COMPONENTMANAGER_FUZZER_H +#define TEST_COMPONENTMANAGER_FUZZER_H #define FUZZ_PROJECT_NAME "test_ComponentManager_fuzzer" +#endif diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init deleted file mode 100644 index 6b7212c8..00000000 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/corpus/init +++ /dev/null @@ -1 +0,0 @@ -FUZZ \ No newline at end of file diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp index b628f355..29b17cd8 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp @@ -15,8 +15,8 @@ #include "test_ResourceManager_fuzzer.h" -#include -#include +#include +#include #include #include diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h index 32b39bf1..719801b6 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h @@ -13,12 +13,9 @@ * limitations under the License. */ -#include -#include -#include -#include -#include -#include +#ifndef TEST_RESOURCEMANAGER_FUZZER_H +#define TEST_RESOURCEMANAGER_FUZZER_H #define FUZZ_PROJECT_NAME "test_ResourceManager_fuzzer" +#endif diff --git a/utils/test/fuzztest/test_Utils_fuzzer/corpus/init b/utils/test/fuzztest/test_Utils_fuzzer/corpus/init deleted file mode 100644 index 6b7212c8..00000000 --- a/utils/test/fuzztest/test_Utils_fuzzer/corpus/init +++ /dev/null @@ -1 +0,0 @@ -FUZZ \ No newline at end of file diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h index 6f07d777..72335f1d 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h +++ b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h @@ -13,12 +13,9 @@ * limitations under the License. */ -#include -#include -#include -#include -#include -#include +#ifndef TEST_UTILS_FUZZER_H +#define TEST_UTILS_FUZZER_H #define FUZZ_PROJECT_NAME "test_Utils_fuzzer" +#endif -- Gitee From 6fc72e0cce96213472e841b9f7f0578546fe8f5d Mon Sep 17 00:00:00 2001 From: dl Date: Fri, 25 Mar 2022 12:39:26 +0800 Subject: [PATCH 3/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- .../test_AccessManager_fuzzer/BUILD.gn | 16 ++++++++------ .../test/fuzztest/BUILD.gn | 2 +- .../test_ComponentManager_fuzzer/BUILD.gn | 19 ++++++++++------- .../test_ResourceManager_fuzzer/BUILD.gn | 21 ++++++++++++------- utils/test/fuzztest/BUILD.gn | 2 +- .../test/fuzztest/test_Utils_fuzzer/BUILD.gn | 19 ++++++++++------- 6 files changed, 47 insertions(+), 32 deletions(-) diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn index 743157d5..b5a3d3c1 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn @@ -14,7 +14,8 @@ #####################hydra-fuzz################### import("//build/config/features.gni") import("//build/test.gni") -import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") +import( + "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## ohos_fuzztest("test_AccessManager_fuzzer") { @@ -32,16 +33,19 @@ ohos_fuzztest("test_AccessManager_fuzzer") { "${services_path}/distributedhardwarefwkservice/include", "${services_path}/distributedhardwarefwkservice/include/accessmanager", ] - cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] - sources = [ - "test_AccessManager_fuzzer.cpp", + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", ] + sources = [ "test_AccessManager_fuzzer.cpp" ] deps = [ "${utils_path}:distributedhardwareutils", + "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp:devicemanagersdk", "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkservice:distributedhardwarefwksvr", "//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk", - "//foundation/distributedhardware/devicemanager/interfaces/inner_kits/native_cpp:devicemanagersdk", ] defines = [ @@ -59,11 +63,11 @@ ohos_fuzztest("test_AccessManager_fuzzer") { "startup_l2:syspara", ] } + ############################################################################### group("fuzztest") { testonly = true deps = [ ":test_AccessManager_fuzzer" ] - } ############################################################################### diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn index 12fece32..1955d7f9 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn @@ -16,6 +16,6 @@ group("fuzztest") { deps = [ "test_ComponentManager_fuzzer:fuzztest", - "test_ResourceManager_fuzzer:fuzztest" + "test_ResourceManager_fuzzer:fuzztest", ] } diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn index 02bf0bd5..6be7f1ba 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn @@ -14,7 +14,8 @@ #####################hydra-fuzz################### import("//build/config/features.gni") import("//build/test.gni") -import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") +import( + "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## ohos_fuzztest("test_ComponentManager_fuzzer") { @@ -30,14 +31,17 @@ ohos_fuzztest("test_ComponentManager_fuzzer") { "${common_path}/log/include", "//utils/native/base/include", ] - cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] - sources = [ - "test_ComponentManager_fuzzer.cpp", + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", ] + sources = [ "test_ComponentManager_fuzzer.cpp" ] deps = [ + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl", "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils", - "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl" ] defines = [ @@ -46,10 +50,9 @@ ohos_fuzztest("test_ComponentManager_fuzzer") { "LOG_DOMAIN=0xD004100", ] - external_deps = [ - "ipc:ipc_core", - ] + external_deps = [ "ipc:ipc_core" ] } + ############################################################################### group("fuzztest") { testonly = true diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn index 1c137120..bbb07f36 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn @@ -14,7 +14,8 @@ #####################hydra-fuzz################### import("//build/config/features.gni") import("//build/test.gni") -import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") +import( + "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## ohos_fuzztest("test_ResourceManager_fuzzer") { @@ -32,17 +33,20 @@ ohos_fuzztest("test_ResourceManager_fuzzer") { "//utils/native/base/include", "//third_party/json/include", "//utils/native/base/include", - "//utils/system/safwk/native/include" + "//utils/system/safwk/native/include", ] - cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] - sources = [ - "test_ResourceManager_fuzzer.cpp", + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", ] + sources = [ "test_ResourceManager_fuzzer.cpp" ] deps = [ - "//utils/native/base:utils", + "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl", "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils", - "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl" + "//utils/native/base:utils", ] defines = [ @@ -54,11 +58,12 @@ ohos_fuzztest("test_ResourceManager_fuzzer") { external_deps = [ "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", + "distributeddatamgr:distributeddata_inner", "eventhandler:libeventhandler", "hiviewdfx_hilog_native:libhilog", - "distributeddatamgr:distributeddata_inner" ] } + ############################################################################### group("fuzztest") { testonly = true diff --git a/utils/test/fuzztest/BUILD.gn b/utils/test/fuzztest/BUILD.gn index bcc2a768..c9a8a07e 100644 --- a/utils/test/fuzztest/BUILD.gn +++ b/utils/test/fuzztest/BUILD.gn @@ -14,5 +14,5 @@ group("fuzztest") { testonly = true - deps = [ "test_Utils_fuzzer:fuzztest", ] + deps = [ "test_Utils_fuzzer:fuzztest" ] } diff --git a/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn b/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn index 1b3d2342..7e69a31f 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn +++ b/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn @@ -14,7 +14,8 @@ #####################hydra-fuzz################### import("//build/config/features.gni") import("//build/test.gni") -import("//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") +import( + "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## ohos_fuzztest("test_Utils_fuzzer") { @@ -26,18 +27,20 @@ ohos_fuzztest("test_Utils_fuzzer") { "${common_path}/utils/include", "//utils/native/base/include", ] - cflags = ["-g","-O0","-Wno-unused-variable","-fno-omit-frame-pointer"] - sources = [ - "test_Utils_fuzzer.cpp", + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", ] + sources = [ "test_Utils_fuzzer.cpp" ] - deps = [ - "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils" - ] + deps = [ "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils" ] } + ############################################################################### group("fuzztest") { testonly = true - deps = [ ":test_Utils_fuzzer", ] + deps = [ ":test_Utils_fuzzer" ] } ############################################################################### -- Gitee From 8124613a1542e4d02f00b8acfc9afa00f4badc23 Mon Sep 17 00:00:00 2001 From: dl Date: Fri, 25 Mar 2022 13:00:08 +0800 Subject: [PATCH 4/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp index c59f4424..ff95f3f1 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp +++ b/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp @@ -15,8 +15,8 @@ #include "test_Utils_fuzzer.h" -#include -#include +#include +#include #include "anonymous_string.h" #include "dh_utils_tool.h" -- Gitee From a830789e88922c35eb397dfe1ac4822f40ea016b Mon Sep 17 00:00:00 2001 From: dl Date: Mon, 28 Mar 2022 14:44:51 +0800 Subject: [PATCH 5/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- .../test/fuzztest/BUILD.gn | 2 +- .../BUILD.gn | 10 +-- .../project.xml | 0 .../test_accessmanager_fuzzer.cpp} | 22 +++--- .../test_accessmanager_fuzzer.h} | 2 +- .../test/fuzztest/BUILD.gn | 4 +- .../BUILD.gn | 10 +-- .../project.xml | 0 .../test_componentmanager_fuzzer.cpp} | 29 ++++---- .../test_componentmanager_fuzzer.h} | 2 +- .../BUILD.gn | 10 +-- .../project.xml | 0 .../test_resourcemanager_fuzzer.cpp} | 72 ++++++------------- .../test_resourcemanager_fuzzer.h} | 2 +- utils/test/fuzztest/BUILD.gn | 2 +- .../BUILD.gn | 8 +-- .../project.xml | 0 .../test_utils_fuzzer.cpp} | 32 +++++---- .../test_utils_fuzzer.h} | 2 +- 19 files changed, 89 insertions(+), 120 deletions(-) rename services/distributedhardwarefwkservice/test/fuzztest/{test_AccessManager_fuzzer => test_accessmanager_fuzzer}/BUILD.gn (90%) rename services/distributedhardwarefwkservice/test/fuzztest/{test_AccessManager_fuzzer => test_accessmanager_fuzzer}/project.xml (100%) rename services/distributedhardwarefwkservice/test/fuzztest/{test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp => test_accessmanager_fuzzer/test_accessmanager_fuzzer.cpp} (69%) rename services/distributedhardwarefwkservice/test/fuzztest/{test_AccessManager_fuzzer/test_AccessManager_fuzzer.h => test_accessmanager_fuzzer/test_accessmanager_fuzzer.h} (92%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ComponentManager_fuzzer => test_componentmanager_fuzzer}/BUILD.gn (88%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ComponentManager_fuzzer => test_componentmanager_fuzzer}/project.xml (100%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp => test_componentmanager_fuzzer/test_componentmanager_fuzzer.cpp} (61%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h => test_componentmanager_fuzzer/test_componentmanager_fuzzer.h} (92%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ResourceManager_fuzzer => test_resourcemanager_fuzzer}/BUILD.gn (90%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ResourceManager_fuzzer => test_resourcemanager_fuzzer}/project.xml (100%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp => test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.cpp} (35%) rename services/distributedhardwarefwkserviceimpl/test/fuzztest/{test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h => test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.h} (92%) rename utils/test/fuzztest/{test_Utils_fuzzer => test_utils_fuzzer}/BUILD.gn (89%) rename utils/test/fuzztest/{test_Utils_fuzzer => test_utils_fuzzer}/project.xml (100%) rename utils/test/fuzztest/{test_Utils_fuzzer/test_Utils_fuzzer.cpp => test_utils_fuzzer/test_utils_fuzzer.cpp} (59%) rename utils/test/fuzztest/{test_Utils_fuzzer/test_Utils_fuzzer.h => test_utils_fuzzer/test_utils_fuzzer.h} (93%) diff --git a/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn index 327c179b..ef3fb4a0 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/fuzztest/BUILD.gn @@ -14,5 +14,5 @@ group("fuzztest") { testonly = true - deps = [ "test_AccessManager_fuzzer:fuzztest" ] + deps = [ "test_accessmanager_fuzzer:fuzztest" ] } diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/BUILD.gn similarity index 90% rename from services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn rename to services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/BUILD.gn index b5a3d3c1..23b577d6 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/BUILD.gn @@ -18,8 +18,8 @@ import( "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## -ohos_fuzztest("test_AccessManager_fuzzer") { - module_out_path = "distributed_hardware_fwk/test_AccessManager_fuzzer" +ohos_fuzztest("test_accessmanager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_accessmanager_fuzzer" include_dirs = [ "//utils/native/base/include", @@ -39,7 +39,7 @@ ohos_fuzztest("test_AccessManager_fuzzer") { "-Wno-unused-variable", "-fno-omit-frame-pointer", ] - sources = [ "test_AccessManager_fuzzer.cpp" ] + sources = [ "test_accessmanager_fuzzer.cpp" ] deps = [ "${utils_path}:distributedhardwareutils", @@ -50,7 +50,7 @@ ohos_fuzztest("test_AccessManager_fuzzer") { defines = [ "HI_LOG_ENABLE", - "DH_LOG_TAG=\"test_AccessManager_fuzzer\"", + "DH_LOG_TAG=\"test_accessmanager_fuzzer\"", "LOG_DOMAIN=0xD004100", ] @@ -68,6 +68,6 @@ ohos_fuzztest("test_AccessManager_fuzzer") { group("fuzztest") { testonly = true - deps = [ ":test_AccessManager_fuzzer" ] + deps = [ ":test_accessmanager_fuzzer" ] } ############################################################################### diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/project.xml similarity index 100% rename from services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/project.xml rename to services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/project.xml diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.cpp similarity index 69% rename from services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp rename to services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.cpp index 537a9428..a3cfe4fd 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.cpp +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "test_AccessManager_fuzzer.h" +#include "test_accessmanager_fuzzer.h" #include #include @@ -28,20 +28,18 @@ namespace OHOS { namespace DistributedHardware { constexpr uint16_t TEST_DEV_TYPE_PAD = 0x11; -constexpr uint16_t STR_LEN = 32; -bool AccessManagerFuzzTest(const uint8_t* data, size_t size) +void AccessManagerFuzzTest(const uint8_t* data, size_t size) { - if (size > (STR_LEN * 2)) { - std::string networkId(reinterpret_cast(data), STR_LEN); - std::string uuid(reinterpret_cast(data + STR_LEN), STR_LEN); - - DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent( - networkId, uuid, TEST_DEV_TYPE_PAD); - return true; - } else { - return false; + if ((data == nullptr) || (size <= 0)) { + return; } + + std::string networkId(reinterpret_cast(data), size); + std::string uuid(reinterpret_cast(data), size); + + DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent( + networkId, uuid, TEST_DEV_TYPE_PAD); } } } diff --git a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.h similarity index 92% rename from services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h rename to services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.h index 48989de0..e1a1e61c 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/test_AccessManager_fuzzer/test_AccessManager_fuzzer.h +++ b/services/distributedhardwarefwkservice/test/fuzztest/test_accessmanager_fuzzer/test_accessmanager_fuzzer.h @@ -16,7 +16,7 @@ #ifndef TEST_ACCESSMANAGER_FUZZER_H #define TEST_ACCESSMANAGER_FUZZER_H -#define FUZZ_PROJECT_NAME "test_AccessManager_fuzzer" +#define FUZZ_PROJECT_NAME "test_accessmanager_fuzzer" #endif diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn index 1955d7f9..55d6ff74 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/BUILD.gn @@ -15,7 +15,7 @@ group("fuzztest") { testonly = true deps = [ - "test_ComponentManager_fuzzer:fuzztest", - "test_ResourceManager_fuzzer:fuzztest", + "test_componentmanager_fuzzer:fuzztest", + "test_resourcemanager_fuzzer:fuzztest", ] } diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/BUILD.gn similarity index 88% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/BUILD.gn index 6be7f1ba..7bab9f46 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/BUILD.gn @@ -18,8 +18,8 @@ import( "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## -ohos_fuzztest("test_ComponentManager_fuzzer") { - module_out_path = "distributed_hardware_fwk/test_ComponentManager_fuzzer" +ohos_fuzztest("test_componentmanager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_componentmanager_fuzzer" include_dirs = [ "${utils_path}/include", @@ -37,7 +37,7 @@ ohos_fuzztest("test_ComponentManager_fuzzer") { "-Wno-unused-variable", "-fno-omit-frame-pointer", ] - sources = [ "test_ComponentManager_fuzzer.cpp" ] + sources = [ "test_componentmanager_fuzzer.cpp" ] deps = [ "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl", @@ -46,7 +46,7 @@ ohos_fuzztest("test_ComponentManager_fuzzer") { defines = [ "HI_LOG_ENABLE", - "DH_LOG_TAG=\"test_ComponentManager_fuzzer\"", + "DH_LOG_TAG=\"test_componentmanager_fuzzer\"", "LOG_DOMAIN=0xD004100", ] @@ -56,6 +56,6 @@ ohos_fuzztest("test_ComponentManager_fuzzer") { ############################################################################### group("fuzztest") { testonly = true - deps = [ ":test_ComponentManager_fuzzer" ] + deps = [ ":test_componentmanager_fuzzer" ] } ############################################################################### diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/project.xml similarity index 100% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/project.xml rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/project.xml diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.cpp similarity index 61% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.cpp index ce8dfeaa..dabf9a3e 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.cpp +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "test_ComponentManager_fuzzer.h" +#include "test_componentmanager_fuzzer.h" #include #include @@ -27,23 +27,20 @@ namespace OHOS { namespace DistributedHardware { -constexpr uint16_t STR_LEN = 32; - -bool ComponentManagerFuzzTest(const uint8_t* data, size_t size) +void ComponentManagerFuzzTest(const uint8_t* data, size_t size) { - if (size > (STR_LEN * 3)) { - std::string networkId(reinterpret_cast(data), STR_LEN); - std::string uuid(reinterpret_cast(data + STR_LEN), STR_LEN); - std::string dhId(reinterpret_cast(data + STR_LEN * 2), STR_LEN); - - ComponentManager::GetInstance().Init(); - ComponentManager::GetInstance().Enable(networkId, uuid, dhId); - ComponentManager::GetInstance().Disable(networkId, uuid, dhId); - ComponentManager::GetInstance().UnInit(); - return true; - } else { - return false; + if ((data == nullptr) || (size <= 0)) { + return; } + + std::string networkId(reinterpret_cast(data), size); + std::string uuid(reinterpret_cast(data), size); + std::string dhId(reinterpret_cast(data), size); + + ComponentManager::GetInstance().Init(); + ComponentManager::GetInstance().Enable(networkId, uuid, dhId); + ComponentManager::GetInstance().Disable(networkId, uuid, dhId); + ComponentManager::GetInstance().UnInit(); } } } diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.h similarity index 92% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.h index 70cfc79d..1914d24d 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ComponentManager_fuzzer/test_ComponentManager_fuzzer.h +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_componentmanager_fuzzer/test_componentmanager_fuzzer.h @@ -16,6 +16,6 @@ #ifndef TEST_COMPONENTMANAGER_FUZZER_H #define TEST_COMPONENTMANAGER_FUZZER_H -#define FUZZ_PROJECT_NAME "test_ComponentManager_fuzzer" +#define FUZZ_PROJECT_NAME "test_componentmanager_fuzzer" #endif diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/BUILD.gn similarity index 90% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/BUILD.gn index bbb07f36..62620243 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/BUILD.gn @@ -18,8 +18,8 @@ import( "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## -ohos_fuzztest("test_ResourceManager_fuzzer") { - module_out_path = "distributed_hardware_fwk/test_ResourceManager_fuzzer" +ohos_fuzztest("test_resourcemanager_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_resourcemanager_fuzzer" include_dirs = [ "${utils_path}/include", @@ -41,7 +41,7 @@ ohos_fuzztest("test_ResourceManager_fuzzer") { "-Wno-unused-variable", "-fno-omit-frame-pointer", ] - sources = [ "test_ResourceManager_fuzzer.cpp" ] + sources = [ "test_resourcemanager_fuzzer.cpp" ] deps = [ "//foundation/distributedhardware/distributedhardwarefwk/services/distributedhardwarefwkserviceimpl:distributedhardwarefwksvr_impl", @@ -51,7 +51,7 @@ ohos_fuzztest("test_ResourceManager_fuzzer") { defines = [ "HI_LOG_ENABLE", - "DH_LOG_TAG=\"test_ResourceManager_fuzzer\"", + "DH_LOG_TAG=\"test_resourcemanager_fuzzer\"", "LOG_DOMAIN=0xD004100", ] @@ -67,6 +67,6 @@ ohos_fuzztest("test_ResourceManager_fuzzer") { ############################################################################### group("fuzztest") { testonly = true - deps = [ ":test_ResourceManager_fuzzer" ] + deps = [ ":test_resourcemanager_fuzzer" ] } ############################################################################### diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/project.xml similarity index 100% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/project.xml rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/project.xml diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.cpp similarity index 35% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.cpp index 29b17cd8..bc901eeb 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.cpp +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "test_ResourceManager_fuzzer.h" +#include "test_resourcemanager_fuzzer.h" #include #include @@ -28,66 +28,38 @@ namespace OHOS { namespace DistributedHardware { -constexpr uint16_t TEST_SIZE = 2; -constexpr uint16_t STR_LEN = 32; constexpr uint16_t DHTYPE_SIZE = 5; const DHType dhTypeFuzz[DHTYPE_SIZE] = { DHType::CAMERA, DHType::MIC, DHType::SPEAKER, DHType::DISPLAY, DHType::BUTTON }; -struct CapabilityInfoFuzz { - char dhId_[STR_LEN]; - char deviceId_[STR_LEN]; - char deviceName_[STR_LEN]; - uint16_t deviceType_; - uint8_t dhType_; - char dhAttrs_[STR_LEN]; -}; - -void CreateCapabilityInfo(const uint8_t* data, std::shared_ptr &capInfo) +void ResourceManagerFuzzTest(const uint8_t* data, size_t size) { - const CapabilityInfoFuzz *capInfoFuzz = - reinterpret_cast(data); - - std::string dhId(capInfoFuzz->dhId_); - std::string devId(capInfoFuzz->deviceId_); - std::string devName(capInfoFuzz->deviceName_); - uint16_t devType = capInfoFuzz->deviceType_; - DHType dhType = dhTypeFuzz[capInfoFuzz->dhType_ % DHTYPE_SIZE]; - std::string dhAttrs(capInfoFuzz->dhAttrs_); - - capInfo = std::make_shared(dhId, devId, devName, devType, dhType, dhAttrs); -} + if ((data == nullptr) || (size < sizeof(uint16_t))) { + return; + } -bool ResourceManagerFuzzTest(const uint8_t* data, size_t size) -{ - if (size > sizeof(CapabilityInfoFuzz) * TEST_SIZE) { - std::shared_ptr capInfo1; - std::shared_ptr capInfo2; - std::vector> resInfos; + std::string dhId(reinterpret_cast(data), size); + std::string devId(reinterpret_cast(data), size); + std::string devName(reinterpret_cast(data), size); + uint16_t devType = *(reinterpret_cast(data)); + DHType dhType = dhTypeFuzz[data[0] % DHTYPE_SIZE]; + std::string dhAttrs(reinterpret_cast(data), size); - CreateCapabilityInfo(data, capInfo1); - CreateCapabilityInfo(data + sizeof(CapabilityInfoFuzz), capInfo2); - resInfos.emplace_back(capInfo1); - resInfos.emplace_back(capInfo2); - CapabilityInfoManager::GetInstance()->AddCapability(resInfos); + std::shared_ptr capInfo = + std::make_shared(dhId, devId, devName, devType, dhType, dhAttrs); + std::vector> resInfos; + resInfos.emplace_back(capInfo); - std::shared_ptr info; - CapabilityInfoManager::GetInstance()->GetCapability(capInfo1->GetDeviceId(), capInfo1->GetDHId(), info); - CapabilityInfoManager::GetInstance()->GetCapability(capInfo2->GetDeviceId(), capInfo2->GetDHId(), info); - CapabilityInfoManager::GetInstance()->GetDataByKey(capInfo1->GetKey(), info); - CapabilityInfoManager::GetInstance()->GetDataByKey(capInfo2->GetKey(), info); + CapabilityInfoManager::GetInstance()->AddCapability(resInfos); - CapabilityInfoMap capMap; - CapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(capInfo1->GetDeviceId(), capMap); - CapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(capInfo1->GetDeviceId(), capMap); + std::shared_ptr info; + CapabilityInfoManager::GetInstance()->GetCapability(capInfo->GetDeviceId(), capInfo->GetDHId(), info); + CapabilityInfoManager::GetInstance()->GetDataByKey(capInfo->GetKey(), info); - CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capInfo1->GetKey()); - CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capInfo2->GetKey()); - return true; - } else { - return false; - } + CapabilityInfoMap capMap; + CapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(capInfo->GetDeviceId(), capMap); + CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capInfo->GetKey()); } } } diff --git a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.h similarity index 92% rename from services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h rename to services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.h index 719801b6..48761b3c 100644 --- a/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_ResourceManager_fuzzer/test_ResourceManager_fuzzer.h +++ b/services/distributedhardwarefwkserviceimpl/test/fuzztest/test_resourcemanager_fuzzer/test_resourcemanager_fuzzer.h @@ -16,6 +16,6 @@ #ifndef TEST_RESOURCEMANAGER_FUZZER_H #define TEST_RESOURCEMANAGER_FUZZER_H -#define FUZZ_PROJECT_NAME "test_ResourceManager_fuzzer" +#define FUZZ_PROJECT_NAME "test_resourcemanager_fuzzer" #endif diff --git a/utils/test/fuzztest/BUILD.gn b/utils/test/fuzztest/BUILD.gn index c9a8a07e..d90b4188 100644 --- a/utils/test/fuzztest/BUILD.gn +++ b/utils/test/fuzztest/BUILD.gn @@ -14,5 +14,5 @@ group("fuzztest") { testonly = true - deps = [ "test_Utils_fuzzer:fuzztest" ] + deps = [ "test_utils_fuzzer:fuzztest" ] } diff --git a/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn b/utils/test/fuzztest/test_utils_fuzzer/BUILD.gn similarity index 89% rename from utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn rename to utils/test/fuzztest/test_utils_fuzzer/BUILD.gn index 7e69a31f..c684397a 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/BUILD.gn +++ b/utils/test/fuzztest/test_utils_fuzzer/BUILD.gn @@ -18,8 +18,8 @@ import( "//foundation/distributedhardware/distributedhardwarefwk/distributedhardwarefwk.gni") ##############################fuzztest########################################## -ohos_fuzztest("test_Utils_fuzzer") { - module_out_path = "distributed_hardware_fwk/test_Utils_fuzzer" +ohos_fuzztest("test_utils_fuzzer") { + module_out_path = "distributed_hardware_fwk/test_utils_fuzzer" include_dirs = [ "${utils_path}/include", @@ -33,7 +33,7 @@ ohos_fuzztest("test_Utils_fuzzer") { "-Wno-unused-variable", "-fno-omit-frame-pointer", ] - sources = [ "test_Utils_fuzzer.cpp" ] + sources = [ "test_utils_fuzzer.cpp" ] deps = [ "//foundation/distributedhardware/distributedhardwarefwk/utils:distributedhardwareutils" ] } @@ -41,6 +41,6 @@ ohos_fuzztest("test_Utils_fuzzer") { ############################################################################### group("fuzztest") { testonly = true - deps = [ ":test_Utils_fuzzer" ] + deps = [ ":test_utils_fuzzer" ] } ############################################################################### diff --git a/utils/test/fuzztest/test_Utils_fuzzer/project.xml b/utils/test/fuzztest/test_utils_fuzzer/project.xml similarity index 100% rename from utils/test/fuzztest/test_Utils_fuzzer/project.xml rename to utils/test/fuzztest/test_utils_fuzzer/project.xml diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp similarity index 59% rename from utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp rename to utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp index ff95f3f1..10be9736 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.cpp +++ b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "test_Utils_fuzzer.h" +#include "test_utils_fuzzer.h" #include #include @@ -21,25 +21,26 @@ #include "anonymous_string.h" #include "dh_utils_tool.h" - namespace OHOS { namespace DistributedHardware { -constexpr uint16_t STR_LEN = 32; - -bool UtilsFuzzerTet(const uint8_t* data, size_t size) +void GetAnonyStringTest(const uint8_t* data, size_t size) { - if (size > STR_LEN) { - std::string str1(reinterpret_cast(data), STR_LEN); - std::string anonyStr1 = GetAnonyString(str1); + if ((data == nullptr) || (size <= 0)) { + return; + } - std::string str2(reinterpret_cast(data), (*data) % STR_LEN); - std::string anonyStr2 = GetAnonyString(str2); + std::string str(reinterpret_cast(data), size); + std::string anonyStr = GetAnonyString(str); +} - int32_t i = *(reinterpret_cast(data)); - std::string anonyStri = GetAnonyInt32(i); - return true; +void GetAnonyInt32Test(const uint8_t* data, size_t size) +{ + if ((data == nullptr) || (size < sizeof(int32_t))) { + return; } - return false; + + int32_t i = *(reinterpret_cast(data)); + std::string anonyStri = GetAnonyInt32(i); } } } @@ -48,7 +49,8 @@ bool UtilsFuzzerTet(const uint8_t* data, size_t size) extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { /* Run your code on data */ - OHOS::DistributedHardware::UtilsFuzzerTet(data, size); + OHOS::DistributedHardware::GetAnonyStringTest(data, size); + OHOS::DistributedHardware::GetAnonyInt32Test(data, size); return 0; } diff --git a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.h similarity index 93% rename from utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h rename to utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.h index 72335f1d..7ac240e9 100644 --- a/utils/test/fuzztest/test_Utils_fuzzer/test_Utils_fuzzer.h +++ b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.h @@ -16,6 +16,6 @@ #ifndef TEST_UTILS_FUZZER_H #define TEST_UTILS_FUZZER_H -#define FUZZ_PROJECT_NAME "test_Utils_fuzzer" +#define FUZZ_PROJECT_NAME "test_utils_fuzzer" #endif -- Gitee From 457a60042a600bbebcaec4dcb8177aaa703820f0 Mon Sep 17 00:00:00 2001 From: dl Date: Mon, 28 Mar 2022 15:38:32 +0800 Subject: [PATCH 6/6] add distributedhardwarefwk fuzz test Signed-off-by: dl --- .../test_utils_fuzzer/test_utils_fuzzer.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp index 10be9736..aa03d3be 100644 --- a/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp +++ b/utils/test/fuzztest/test_utils_fuzzer/test_utils_fuzzer.cpp @@ -40,7 +40,19 @@ void GetAnonyInt32Test(const uint8_t* data, size_t size) } int32_t i = *(reinterpret_cast(data)); - std::string anonyStri = GetAnonyInt32(i); + std::string anonyStr = GetAnonyInt32(i); +} + +void UtilsToolTest(const uint8_t* data, size_t size) +{ + if ((data == nullptr) || (size <= 0)) { + return; + } + + std::string networkId(reinterpret_cast(data), size); + std::string uuid(reinterpret_cast(data), size); + std::string uuidStr = GetUUIDBySoftBus(networkId); + std::string deviceIdStr = GetDeviceIdByUUID(uuid); } } } @@ -51,6 +63,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) /* Run your code on data */ OHOS::DistributedHardware::GetAnonyStringTest(data, size); OHOS::DistributedHardware::GetAnonyInt32Test(data, size); + OHOS::DistributedHardware::UtilsToolTest(data, size); return 0; } -- Gitee