From b30e0e0db9fa204a2ad901690265fba50366a49f Mon Sep 17 00:00:00 2001 From: gecheng Date: Thu, 17 Jul 2025 15:48:17 +0800 Subject: [PATCH 1/4] =?UTF-8?q?object=E5=A2=9E=E5=8A=A0fuzz=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gecheng --- .../service/test/fuzztest/BUILD.gn | 1 + .../objectserviceimp_fuzzer.cpp | 95 +++++++++++-------- .../objectservicelistener_fuzzer/BUILD.gn | 63 ++++++++++++ .../objectservicelistener_fuzzer/corpus/init | 16 ++++ .../objectserviceimp_fuzzer.cpp | 63 ++++++++++++ .../objectserviceimp_fuzzer.h | 21 ++++ .../objectservicelistener_fuzzer/project.xml | 25 +++++ 7 files changed, 246 insertions(+), 38 deletions(-) create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/corpus/init create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/project.xml diff --git a/services/distributeddataservice/service/test/fuzztest/BUILD.gn b/services/distributeddataservice/service/test/fuzztest/BUILD.gn index 9e801a6ad..b66239287 100644 --- a/services/distributeddataservice/service/test/fuzztest/BUILD.gn +++ b/services/distributeddataservice/service/test/fuzztest/BUILD.gn @@ -31,6 +31,7 @@ group("fuzztest") { deps += [ "objectservicestub_fuzzer:fuzztest", "objectserviceimp_fuzzer:fuzztest", + "objectservicelistener_fuzzer:fuzztest", ] } diff --git a/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp index 857603cdf..f76a6dcf0 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp @@ -27,40 +27,21 @@ void ObjectStoreSaveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(); - std::string sessionId = provider.ConsumeRandomLengthString(); - std::string deviceId = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string deviceId = provider.ConsumeRandomLengthString(10); std::map> data; std::vector remainingData = provider.ConsumeRemainingBytes(); data["key1"] = remainingData; objectServiceImpl->ObjectStoreSave(bundleName, sessionId, deviceId, data, callback); } -void SaveMetaDataFuzzTest(FuzzedDataProvider &provider) -{ - std::shared_ptr objectServiceImpl = std::make_shared(); - StoreMetaData saveMeta; - objectServiceImpl->SaveMetaData(saveMeta); - auto &dmAdapter = DeviceManagerAdapter::GetInstance(); - std::string uuid = provider.ConsumeRandomLengthString(); - std::string udid = provider.ConsumeRandomLengthString(); - if (uuid.empty()) { - uuid = "123"; - } - if (udid.empty()) { - udid = "234"; - } - dmAdapter.localInfo_.uuid = uuid; - dmAdapter.localInfo_.udid = udid; - objectServiceImpl->SaveMetaData(saveMeta); -} - void OnUserChangeFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); uint32_t code = static_cast(AccountStatus::DEVICE_ACCOUNT_SWITCHED); - std::string user = provider.ConsumeRandomLengthString(); - std::string account = provider.ConsumeRandomLengthString(); + std::string user = provider.ConsumeRandomLengthString(10); + std::string account = provider.ConsumeRandomLengthString(10); objectServiceImpl->OnUserChange(code, user, account); } @@ -68,8 +49,8 @@ void ObjectStoreRevokeSaveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(); - std::string sessionId = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); objectServiceImpl->ObjectStoreRevokeSave(bundleName, sessionId, callback); } @@ -77,8 +58,8 @@ void ObjectStoreRetrieveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(); - std::string sessionId = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); objectServiceImpl->ObjectStoreRetrieve(bundleName, sessionId, callback); } @@ -86,24 +67,27 @@ void RegisterDataObserverFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(); - std::string sessionId = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); objectServiceImpl->RegisterDataObserver(bundleName, sessionId, callback); } void OnAppUninstallFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); - std::string bundleName = provider.ConsumeRandomLengthString(); + if (objectServiceImpl->factory_.staticActs_ == nullptr) { + return; + } + std::string bundleName = provider.ConsumeRandomLengthString(10); int32_t user = provider.ConsumeIntegral(); int32_t index = provider.ConsumeIntegral(); - objectServiceImpl->OnAppUninstall(bundleName, user, index); + objectServiceImpl->factory_.staticActs_->OnAppUninstall(bundleName, user, index); } void ResolveAutoLaunchFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); - std::string identifier = provider.ConsumeRandomLengthString(); + std::string identifier = provider.ConsumeRandomLengthString(10); DistributedDB::AutoLaunchParam param; objectServiceImpl->ResolveAutoLaunch(identifier, param); } @@ -114,7 +98,7 @@ void OnAppExitFuzzTest(FuzzedDataProvider &provider) pid_t uid = provider.ConsumeIntegral(); pid_t pid = provider.ConsumeIntegral(); uint32_t tokenId = provider.ConsumeIntegral(); - std::string bundleName = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(10); objectServiceImpl->OnAppExit(uid, pid, tokenId, bundleName); objectServiceImpl->RegisterObjectServiceInfo(); objectServiceImpl->RegisterHandler(); @@ -124,14 +108,48 @@ void DumpObjectServiceInfoFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); int fd = provider.ConsumeIntegral(); - std::string key = provider.ConsumeRandomLengthString(); - std::string value1 = provider.ConsumeRandomLengthString(); - std::string value2 = provider.ConsumeRandomLengthString(); + std::string key = provider.ConsumeRandomLengthString(10); + std::string value1 = provider.ConsumeRandomLengthString(10); + std::string value2 = provider.ConsumeRandomLengthString(10); std::map> params; std::vector value = {value1, value2}; params.emplace(std::make_pair(key, value)); objectServiceImpl->DumpObjectServiceInfo(fd, params); } +void SaveMetaDataFuzzTest(FuzzedDataProvider &provider) +{ + std::shared_ptr objectServiceImpl = std::make_shared(); + StoreMetaData saveMeta; + objectServiceImpl->SaveMetaData(saveMeta); + auto &dmAdapter = DeviceManagerAdapter::GetInstance(); + std::string uuid = provider.ConsumeRandomLengthString(10); + std::string udid = provider.ConsumeRandomLengthString(10); + if (uuid.empty()) { + uuid = "123"; + } + if (udid.empty()) { + udid = "234"; + } + dmAdapter.localInfo_.uuid = uuid; + dmAdapter.localInfo_.udid = udid; + objectServiceImpl->SaveMetaData(saveMeta); +} + +void BindAssetStoreFuzzTest(FuzzedDataProvider &provider) +{ + std::shared_ptr objectServiceImpl = std::make_shared(); + std::string bundleName = provider.ConsumeRandomLengthString(20); + std::string sessionId = provider.ConsumeRandomLengthString(20); + ObjectStore::Asset asset = {.id = provider.ConsumeRandomLengthString(10), + .name = provider.ConsumeRandomLengthString(10), + .uri = provider.ConsumeRandomLengthString(10)}; + ObjectStore::AssetBindInfo bindInfo = {.storeName = provider.ConsumeRandomLengthString(10), + .tableName = provider.ConsumeRandomLengthString(10), + .primaryKey = {{"data1", 123}, {"data2", "test1"}}, + .field = provider.ConsumeRandomLengthString(10), + .assetName = provider.ConsumeRandomLengthString(10)}; + objectServiceImpl->BindAssetStore(bundleName, sessionId, asset, bindInfo); +} } // namespace OHOS /* Fuzzer entry point */ @@ -140,7 +158,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) FuzzedDataProvider provider(data, size); OHOS::ObjectStoreSaveFuzzTest(provider); OHOS::OnUserChangeFuzzTest(provider); - OHOS::SaveMetaDataFuzzTest(provider); OHOS::ObjectStoreRevokeSaveFuzzTest(provider); OHOS::ObjectStoreRetrieveFuzzTest(provider); OHOS::RegisterDataObserverFuzzTest(provider); @@ -148,5 +165,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) OHOS::ResolveAutoLaunchFuzzTest(provider); OHOS::OnAppExitFuzzTest(provider); OHOS::DumpObjectServiceInfoFuzzTest(provider); + OHOS::SaveMetaDataFuzzTest(provider); + OHOS::BindAssetStoreFuzzTest(provider); return 0; } \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn new file mode 100644 index 000000000..6d6170431 --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn @@ -0,0 +1,63 @@ +# Copyright (c) 2025 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/distributeddatamgr/datamgr_service/datamgr_service.gni") + +##############################fuzztest########################################## +ohos_fuzztest("ObjectServiceListenerFuzzTest") { + module_out_path = "datamgr_service/datamgr_service" + + include_dirs = [ + "${data_service_path}/service/object/include", + ] + + fuzz_config_file = + "${data_service_path}/service/test/fuzztest/objectservicelistener_fuzzer" + + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + "-fno-access-control", + ] + + sources = [ + "objectservicelistener_fuzzer.cpp", + ] + + deps = [ + "${data_service_path}/framework:distributeddatasvcfwk", + "${data_service_path}/service:distributeddatasvc", + "${data_service_path}/service/object:distributeddata_object", + ] + + external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtokenid_sdk", + "data_object:data_object_inner", + "dfs_service:distributed_file_daemon_kit_inner", + "hilog:libhilog", + "kv_store:distributeddb", + ] +} + +############################################################################### +group("fuzztest") { + testonly = true + + deps = [ ":ObjectServiceListenerFuzzTest" ] +} +############################################################################### diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/corpus/init b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/corpus/init new file mode 100644 index 000000000..7ade8a0fa --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/corpus/init @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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. + */ + +FUZZ \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp new file mode 100644 index 000000000..74ebefeb0 --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2025 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 "objectservicelistener_fuzzer.h" + #include "object_data_listener.h" + + using namespace OHOS::DistributedObject; + + namespace OHOS { + + void OnStartFuzzTest(FuzzedDataProvider &provider) + { + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + std::string dstNetworkId = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string dstBundleName = provider.ConsumeRandomLengthString(10); + objectAssetsRecvListener->OnStart(srcNetworkId, dstNetworkId, sessionId, dstBundleName); + } + + void OnFinishedFuzzTest(FuzzedDataProvider &provider) + { + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + int32_t result = provider.ConsumeIntegral(); + sptr assetObj = new AssetObj(); + objectAssetsRecvListener->OnFinished(srcNetworkId, assetObj, result); + } + + void OnRecvProgressFuzzTest(FuzzedDataProvider &provider) + { + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + uint64_t totalBytes = provider.ConsumeIntegral(); + uint64_t processBytes = provider.ConsumeIntegral(); + sptr assetObj1 = new AssetObj(); + objectAssetsRecvListener->OnRecvProgress(srcNetworkId, assetObj1, totalBytes, processBytes); + } + } // namespace OHOS + + /* Fuzzer entry point */ + extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) + { + FuzzedDataProvider provider(data, size); + OHOS::OnStartFuzzTest(provider); + OHOS::OnFinishedFuzzTest(provider); + OHOS::OnRecvProgressFuzzTest(provider); + return 0; + } \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h new file mode 100644 index 000000000..44a18d984 --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2025 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. + */ + + #ifndef OBJECT_SERVICE_LISTENER_FUZZER_H + #define OBJECT_SERVICE_LISTENER_FUZZER_H + + #define FUZZ_PROJECT_NAME "objectservicelistener_fuzzer" + + #endif // OBJECT_SERVICE_LISTENER_FUZZER_H \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/project.xml b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/project.xml new file mode 100644 index 000000000..a37a23b15 --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + \ No newline at end of file -- Gitee From fcbbc55297323a86a139577228af8f4a06c0cc30 Mon Sep 17 00:00:00 2001 From: gecheng Date: Thu, 17 Jul 2025 16:15:20 +0800 Subject: [PATCH 2/4] =?UTF-8?q?object=E5=A2=9E=E5=8A=A0fuzz=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gecheng --- .../objectserviceimp_fuzzer.cpp | 63 ------------------- .../objectservicelistener_fuzzer.cpp | 62 ++++++++++++++++++ ...uzzer.h => objectservicelistener_fuzzer.h} | 12 ++-- 3 files changed, 68 insertions(+), 69 deletions(-) delete mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp create mode 100644 services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp rename services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/{objectserviceimp_fuzzer.h => objectservicelistener_fuzzer.h} (76%) diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp deleted file mode 100644 index 74ebefeb0..000000000 --- a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2025 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 "objectservicelistener_fuzzer.h" - #include "object_data_listener.h" - - using namespace OHOS::DistributedObject; - - namespace OHOS { - - void OnStartFuzzTest(FuzzedDataProvider &provider) - { - std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); - std::string dstNetworkId = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); - std::string dstBundleName = provider.ConsumeRandomLengthString(10); - objectAssetsRecvListener->OnStart(srcNetworkId, dstNetworkId, sessionId, dstBundleName); - } - - void OnFinishedFuzzTest(FuzzedDataProvider &provider) - { - std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); - int32_t result = provider.ConsumeIntegral(); - sptr assetObj = new AssetObj(); - objectAssetsRecvListener->OnFinished(srcNetworkId, assetObj, result); - } - - void OnRecvProgressFuzzTest(FuzzedDataProvider &provider) - { - std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); - uint64_t totalBytes = provider.ConsumeIntegral(); - uint64_t processBytes = provider.ConsumeIntegral(); - sptr assetObj1 = new AssetObj(); - objectAssetsRecvListener->OnRecvProgress(srcNetworkId, assetObj1, totalBytes, processBytes); - } - } // namespace OHOS - - /* Fuzzer entry point */ - extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) - { - FuzzedDataProvider provider(data, size); - OHOS::OnStartFuzzTest(provider); - OHOS::OnFinishedFuzzTest(provider); - OHOS::OnRecvProgressFuzzTest(provider); - return 0; - } \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp new file mode 100644 index 000000000..9700527aa --- /dev/null +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2025 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 "objectservicelistener_fuzzer.h" +#include "object_data_listener.h" + +using namespace OHOS::DistributedObject; + +namespace OHOS { +void OnStartFuzzTest(FuzzedDataProvider &provider) +{ + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + std::string dstNetworkId = provider.ConsumeRandomLengthString(10); + std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string dstBundleName = provider.ConsumeRandomLengthString(10); + objectAssetsRecvListener->OnStart(srcNetworkId, dstNetworkId, sessionId, dstBundleName); +} + +void OnFinishedFuzzTest(FuzzedDataProvider &provider) +{ + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + int32_t result = provider.ConsumeIntegral(); + sptr assetObj = new AssetObj(); + objectAssetsRecvListener->OnFinished(srcNetworkId, assetObj, result); +} + +void OnRecvProgressFuzzTest(FuzzedDataProvider &provider) +{ + std::shared_ptr objectAssetsRecvListener = std::make_shared(); + std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + uint64_t totalBytes = provider.ConsumeIntegral(); + uint64_t processBytes = provider.ConsumeIntegral(); + sptr assetObj1 = new AssetObj(); + objectAssetsRecvListener->OnRecvProgress(srcNetworkId, assetObj1, totalBytes, processBytes); +} +} // namespace OHOS + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + FuzzedDataProvider provider(data, size); + OHOS::OnStartFuzzTest(provider); + OHOS::OnFinishedFuzzTest(provider); + OHOS::OnRecvProgressFuzzTest(provider); + return 0; +} \ No newline at end of file diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.h similarity index 76% rename from services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h rename to services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.h index 44a18d984..355f79d97 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectserviceimp_fuzzer.h +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.h @@ -13,9 +13,9 @@ * limitations under the License. */ - #ifndef OBJECT_SERVICE_LISTENER_FUZZER_H - #define OBJECT_SERVICE_LISTENER_FUZZER_H - - #define FUZZ_PROJECT_NAME "objectservicelistener_fuzzer" - - #endif // OBJECT_SERVICE_LISTENER_FUZZER_H \ No newline at end of file +#ifndef OBJECT_SERVICE_LISTENER_FUZZER_H +#define OBJECT_SERVICE_LISTENER_FUZZER_H + +#define FUZZ_PROJECT_NAME "objectservicelistener_fuzzer" + +#endif // OBJECT_SERVICE_LISTENER_FUZZER_H \ No newline at end of file -- Gitee From 1819d93151583d60376798163f24cc5f945eaaef Mon Sep 17 00:00:00 2001 From: gecheng Date: Thu, 17 Jul 2025 20:36:12 +0800 Subject: [PATCH 3/4] =?UTF-8?q?object=E5=A2=9E=E5=8A=A0fuzz=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gecheng --- .../objectserviceimp_fuzzer.cpp | 56 +++++++++---------- .../objectservicelistener_fuzzer/BUILD.gn | 1 + .../objectservicelistener_fuzzer.cpp | 12 ++-- .../syncstrategies_fuzzer.cpp | 8 +-- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp index f76a6dcf0..de7adc4e9 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/objectserviceimp_fuzzer/objectserviceimp_fuzzer.cpp @@ -27,9 +27,9 @@ void ObjectStoreSaveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); - std::string deviceId = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); + std::string deviceId = provider.ConsumeRandomLengthString(100); std::map> data; std::vector remainingData = provider.ConsumeRemainingBytes(); data["key1"] = remainingData; @@ -40,8 +40,8 @@ void OnUserChangeFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); uint32_t code = static_cast(AccountStatus::DEVICE_ACCOUNT_SWITCHED); - std::string user = provider.ConsumeRandomLengthString(10); - std::string account = provider.ConsumeRandomLengthString(10); + std::string user = provider.ConsumeRandomLengthString(100); + std::string account = provider.ConsumeRandomLengthString(100); objectServiceImpl->OnUserChange(code, user, account); } @@ -49,8 +49,8 @@ void ObjectStoreRevokeSaveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); objectServiceImpl->ObjectStoreRevokeSave(bundleName, sessionId, callback); } @@ -58,8 +58,8 @@ void ObjectStoreRetrieveFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); objectServiceImpl->ObjectStoreRetrieve(bundleName, sessionId, callback); } @@ -67,8 +67,8 @@ void RegisterDataObserverFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); sptr callback; - std::string bundleName = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); objectServiceImpl->RegisterDataObserver(bundleName, sessionId, callback); } @@ -78,7 +78,7 @@ void OnAppUninstallFuzzTest(FuzzedDataProvider &provider) if (objectServiceImpl->factory_.staticActs_ == nullptr) { return; } - std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); int32_t user = provider.ConsumeIntegral(); int32_t index = provider.ConsumeIntegral(); objectServiceImpl->factory_.staticActs_->OnAppUninstall(bundleName, user, index); @@ -87,7 +87,7 @@ void OnAppUninstallFuzzTest(FuzzedDataProvider &provider) void ResolveAutoLaunchFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); - std::string identifier = provider.ConsumeRandomLengthString(10); + std::string identifier = provider.ConsumeRandomLengthString(100); DistributedDB::AutoLaunchParam param; objectServiceImpl->ResolveAutoLaunch(identifier, param); } @@ -98,7 +98,7 @@ void OnAppExitFuzzTest(FuzzedDataProvider &provider) pid_t uid = provider.ConsumeIntegral(); pid_t pid = provider.ConsumeIntegral(); uint32_t tokenId = provider.ConsumeIntegral(); - std::string bundleName = provider.ConsumeRandomLengthString(10); + std::string bundleName = provider.ConsumeRandomLengthString(100); objectServiceImpl->OnAppExit(uid, pid, tokenId, bundleName); objectServiceImpl->RegisterObjectServiceInfo(); objectServiceImpl->RegisterHandler(); @@ -108,9 +108,9 @@ void DumpObjectServiceInfoFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); int fd = provider.ConsumeIntegral(); - std::string key = provider.ConsumeRandomLengthString(10); - std::string value1 = provider.ConsumeRandomLengthString(10); - std::string value2 = provider.ConsumeRandomLengthString(10); + std::string key = provider.ConsumeRandomLengthString(100); + std::string value1 = provider.ConsumeRandomLengthString(100); + std::string value2 = provider.ConsumeRandomLengthString(100); std::map> params; std::vector value = {value1, value2}; params.emplace(std::make_pair(key, value)); @@ -122,8 +122,8 @@ void SaveMetaDataFuzzTest(FuzzedDataProvider &provider) StoreMetaData saveMeta; objectServiceImpl->SaveMetaData(saveMeta); auto &dmAdapter = DeviceManagerAdapter::GetInstance(); - std::string uuid = provider.ConsumeRandomLengthString(10); - std::string udid = provider.ConsumeRandomLengthString(10); + std::string uuid = provider.ConsumeRandomLengthString(100); + std::string udid = provider.ConsumeRandomLengthString(100); if (uuid.empty()) { uuid = "123"; } @@ -138,16 +138,16 @@ void SaveMetaDataFuzzTest(FuzzedDataProvider &provider) void BindAssetStoreFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectServiceImpl = std::make_shared(); - std::string bundleName = provider.ConsumeRandomLengthString(20); - std::string sessionId = provider.ConsumeRandomLengthString(20); - ObjectStore::Asset asset = {.id = provider.ConsumeRandomLengthString(10), - .name = provider.ConsumeRandomLengthString(10), - .uri = provider.ConsumeRandomLengthString(10)}; - ObjectStore::AssetBindInfo bindInfo = {.storeName = provider.ConsumeRandomLengthString(10), - .tableName = provider.ConsumeRandomLengthString(10), + std::string bundleName = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); + ObjectStore::Asset asset = {.id = provider.ConsumeRandomLengthString(100), + .name = provider.ConsumeRandomLengthString(100), + .uri = provider.ConsumeRandomLengthString(100)}; + ObjectStore::AssetBindInfo bindInfo = {.storeName = provider.ConsumeRandomLengthString(100), + .tableName = provider.ConsumeRandomLengthString(100), .primaryKey = {{"data1", 123}, {"data2", "test1"}}, - .field = provider.ConsumeRandomLengthString(10), - .assetName = provider.ConsumeRandomLengthString(10)}; + .field = provider.ConsumeRandomLengthString(100), + .assetName = provider.ConsumeRandomLengthString(100)}; objectServiceImpl->BindAssetStore(bundleName, sessionId, asset, bindInfo); } } // namespace OHOS diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn index 6d6170431..ee4564ee6 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn @@ -50,6 +50,7 @@ ohos_fuzztest("ObjectServiceListenerFuzzTest") { "data_object:data_object_inner", "dfs_service:distributed_file_daemon_kit_inner", "hilog:libhilog", + "ipc:ipc_core", "kv_store:distributeddb", ] } diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp index 9700527aa..f277dab79 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/objectservicelistener_fuzzer.cpp @@ -24,17 +24,17 @@ namespace OHOS { void OnStartFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); - std::string dstNetworkId = provider.ConsumeRandomLengthString(10); - std::string sessionId = provider.ConsumeRandomLengthString(10); - std::string dstBundleName = provider.ConsumeRandomLengthString(10); + std::string srcNetworkId = provider.ConsumeRandomLengthString(100); + std::string dstNetworkId = provider.ConsumeRandomLengthString(100); + std::string sessionId = provider.ConsumeRandomLengthString(100); + std::string dstBundleName = provider.ConsumeRandomLengthString(100); objectAssetsRecvListener->OnStart(srcNetworkId, dstNetworkId, sessionId, dstBundleName); } void OnFinishedFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + std::string srcNetworkId = provider.ConsumeRandomLengthString(100); int32_t result = provider.ConsumeIntegral(); sptr assetObj = new AssetObj(); objectAssetsRecvListener->OnFinished(srcNetworkId, assetObj, result); @@ -43,7 +43,7 @@ void OnFinishedFuzzTest(FuzzedDataProvider &provider) void OnRecvProgressFuzzTest(FuzzedDataProvider &provider) { std::shared_ptr objectAssetsRecvListener = std::make_shared(); - std::string srcNetworkId = provider.ConsumeRandomLengthString(10); + std::string srcNetworkId = provider.ConsumeRandomLengthString(100); uint64_t totalBytes = provider.ConsumeIntegral(); uint64_t processBytes = provider.ConsumeIntegral(); sptr assetObj1 = new AssetObj(); diff --git a/services/distributeddataservice/service/test/fuzztest/syncstrategies_fuzzer/syncstrategies_fuzzer.cpp b/services/distributeddataservice/service/test/fuzztest/syncstrategies_fuzzer/syncstrategies_fuzzer.cpp index a29c25be2..2cf4591d3 100644 --- a/services/distributeddataservice/service/test/fuzztest/syncstrategies_fuzzer/syncstrategies_fuzzer.cpp +++ b/services/distributeddataservice/service/test/fuzztest/syncstrategies_fuzzer/syncstrategies_fuzzer.cpp @@ -24,7 +24,7 @@ namespace OHOS { void SyncStrategiesFuzz001(FuzzedDataProvider &provider) { int32_t user = provider.ConsumeIntegral(); - std::string bundleName = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(100); NetworkSyncStrategy strategy; StoreInfo storeInfo; storeInfo.user = user; @@ -42,7 +42,7 @@ void SyncStrategiesFuzz002(FuzzedDataProvider &provider) void SyncStrategiesFuzz003(FuzzedDataProvider &provider) { int32_t user = provider.ConsumeIntegral(); - std::string bundleName = provider.ConsumeRandomLengthString(); + std::string bundleName = provider.ConsumeRandomLengthString(100); NetworkSyncStrategy strategyInstance; strategyInstance.GetStrategy(user, bundleName); strategyInstance.GetKey(user); @@ -51,8 +51,8 @@ void SyncStrategiesFuzz003(FuzzedDataProvider &provider) info.user = 1; info.bundleName = "StrategyInfo"; Serializable::json node; - std::string key = provider.ConsumeRandomLengthString(); - std::string valueStr = provider.ConsumeRandomLengthString(); + std::string key = provider.ConsumeRandomLengthString(100); + std::string valueStr = provider.ConsumeRandomLengthString(100); int valueInt = provider.ConsumeIntegral(); float valueFloat = provider.ConsumeFloatingPoint(); bool valueBool = provider.ConsumeBool(); -- Gitee From 5965b249cbe89f5e82fe86e92588c5fe6a57d8e4 Mon Sep 17 00:00:00 2001 From: gecheng Date: Thu, 17 Jul 2025 21:25:10 +0800 Subject: [PATCH 4/4] =?UTF-8?q?object=E5=A2=9E=E5=8A=A0fuzz=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gecheng --- .../service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn index ee4564ee6..e2105e207 100644 --- a/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn +++ b/services/distributeddataservice/service/test/fuzztest/objectservicelistener_fuzzer/BUILD.gn @@ -50,7 +50,7 @@ ohos_fuzztest("ObjectServiceListenerFuzzTest") { "data_object:data_object_inner", "dfs_service:distributed_file_daemon_kit_inner", "hilog:libhilog", - "ipc:ipc_core", + "ipc:ipc_single", "kv_store:distributeddb", ] } -- Gitee