From 2203ec45644692ed215ab0733d8edec92d994b74 Mon Sep 17 00:00:00 2001 From: zhouliting Date: Sun, 27 Apr 2025 14:29:30 +0800 Subject: [PATCH] add fuzz. Signed-off-by: zhouliting --- test/common/BUILD.gn | 5 +- test/common/include/fuzz_common.h | 54 ++++++++++++ test/common/src/fuzz_common.cpp | 45 ++++++++++ test/fuzztest/BUILD.gn | 2 + .../initlocalcertificate_fuzzer/BUILD.gn | 75 +++++++++++++++++ .../initlocalcertificate_fuzzer/corpus/init | 14 ++++ .../initlocalcertificate_fuzzer.cpp | 77 +++++++++++++++++ .../initlocalcertificate_fuzzer.h | 21 +++++ .../initlocalcertificate_fuzzer/project.xml | 25 ++++++ .../signlocalcode_fuzzer/BUILD.gn | 75 +++++++++++++++++ .../signlocalcode_fuzzer/corpus/init | 14 ++++ .../signlocalcode_fuzzer/project.xml | 25 ++++++ .../signlocalcode_fuzzer.cpp | 84 +++++++++++++++++++ .../signlocalcode_fuzzer.h | 21 +++++ 14 files changed, 536 insertions(+), 1 deletion(-) create mode 100644 test/common/include/fuzz_common.h create mode 100644 test/common/src/fuzz_common.cpp create mode 100644 test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/BUILD.gn create mode 100644 test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/corpus/init create mode 100644 test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.cpp create mode 100644 test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.h create mode 100644 test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/project.xml create mode 100644 test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/BUILD.gn create mode 100644 test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/corpus/init create mode 100644 test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/project.xml create mode 100644 test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.cpp create mode 100644 test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.h diff --git a/test/common/BUILD.gn b/test/common/BUILD.gn index 004e289..e2597ab 100644 --- a/test/common/BUILD.gn +++ b/test/common/BUILD.gn @@ -26,7 +26,10 @@ ohos_source_set("code_sign_test_common_source_set") { debug = false } - sources = [ "src/code_sign_test_common.cpp" ] + sources = [ + "src/code_sign_test_common.cpp", + "src/fuzz_common.cpp", + ] public_configs = [ ":code_signature" ] diff --git a/test/common/include/fuzz_common.h b/test/common/include/fuzz_common.h new file mode 100644 index 0000000..5bc239d --- /dev/null +++ b/test/common/include/fuzz_common.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 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 CODE_SIGNATURE_FUZZ_COMMON +#define CODE_SIGNATURE_FUZZ_COMMON +#include +#include +#include "securec.h" + +namespace OHOS { +namespace Security { +namespace CodeSign { +class SignInfoRandomGenerator { +public: +SignInfoRandomGenerator(const uint8_t *data, const size_t size) : data_(data), dataLenth_(size) {} + template T GetData() + { + T object{}; + size_t objectSize = sizeof(object); + if (data_ == nullptr || objectSize > dataLenth_ - basePos) { + basePos = 0; // reset read point + return object; // return empty obj + } + errno_t ret = memcpy_s(&object, objectSize, data_ + basePos, objectSize); + if (ret != EOK) { + return {}; + } + basePos += objectSize; + return object; + } + + void GenerateFilePath(std::string &str); + void GenerateString(std::string &str); +private: + const uint8_t *data_; + const size_t dataLenth_; + size_t basePos = 0; +}; +} +} +} +#endif \ No newline at end of file diff --git a/test/common/src/fuzz_common.cpp b/test/common/src/fuzz_common.cpp new file mode 100644 index 0000000..e70efe2 --- /dev/null +++ b/test/common/src/fuzz_common.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 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 "fuzz_common.h" + +namespace OHOS { +namespace Security { +namespace CodeSign { +namespace { +const uint32_t SIGN_PATH_LIMIT = 4095; +const uint64_t SIGN_MAX_SIZE_LEN = 32; +}; + +void SignInfoRandomGenerator::GenerateFilePath(std::string &str) +{ + uint32_t length = GetData() % SIGN_PATH_LIMIT; + str = "/"; + for (uint32_t i = 1; i < length; ++i) { + str += GetData(); + } +} + +void SignInfoRandomGenerator::GenerateString(std::string &str) +{ + uint32_t length = GetData() % SIGN_MAX_SIZE_LEN; + for (uint32_t i = 1; i < length; ++i) { + str += GetData(); + } +} + +} +} +} \ No newline at end of file diff --git a/test/fuzztest/BUILD.gn b/test/fuzztest/BUILD.gn index 2bbd2e5..4049f3e 100644 --- a/test/fuzztest/BUILD.gn +++ b/test/fuzztest/BUILD.gn @@ -19,6 +19,8 @@ group("fuzztest_group") { deps = [ "local_code_sign_stub/initlocalcertificatestub_fuzzer:InitLocalCertificateStubFuzzTest", "local_code_sign_stub/signlocalcodestub_fuzzer:SignLocalCodeStubFuzzTest", + "local_code_sign_stub/initlocalcertificate_fuzzer:InitLocalCertificateFuzzTest", + "local_code_sign_stub/signlocalcode_fuzzer:SignLocalCodeFuzzTest", ] } } diff --git a/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/BUILD.gn b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/BUILD.gn new file mode 100644 index 0000000..b94bada --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/BUILD.gn @@ -0,0 +1,75 @@ +# Copyright (c) 2024 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. + +import("//build/config/features.gni") +import("//build/test.gni") +import("../../../../code_signature.gni") + +ohos_fuzztest("InitLocalCertificateFuzzTest") { + module_out_path = "${fuzz_module_output_path}" + fuzz_config_file = "." + + sources = [ "initlocalcertificate_fuzzer.cpp" ] + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + ] + deps = [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk", + "${code_signature_root_dir}/test/common:code_sign_test_common_source_set", + ] + + include_dirs = [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include", + "${code_signature_root_dir}/services/local_code_sign/include", + ] + external_deps = [ + "access_token:libnativetoken", + "access_token:libtoken_setproc", + ] + + sources += [ + "${code_signature_root_dir}/services/local_code_sign/src/local_code_sign_service.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/local_code_sign_stub.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/permission_utils.cpp", + "${code_signature_root_dir}/utils/src/cert_utils.cpp", + "${code_signature_root_dir}/utils/src/file_helper.cpp", + ] + + include_dirs += [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include", + "${code_signature_root_dir}/utils/include", + ] + public_configs = [ "${code_signature_root_dir}:common_public_config" ] + configs = [ "${code_signature_root_dir}:common_utils_config" ] + deps += [ "${code_signature_root_dir}/utils:fsverity_sign_src_set" ] + external_deps += [ + "access_token:libaccesstoken_sdk", + "access_token:libtokenid_sdk", + "c_utils:utils", + "eventhandler:libeventhandler", + "fsverity-utils:libfsverity_utils", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "huks:libhukssdk", + "init:libbegetutil", + "ipc:ipc_core", + "openssl:libcrypto_shared", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + ] +} diff --git a/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/corpus/init b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/corpus/init new file mode 100644 index 0000000..8bfdbf6 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/corpus/init @@ -0,0 +1,14 @@ +# Copyright (c) 2024 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. + +123456 \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.cpp b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.cpp new file mode 100644 index 0000000..a9e74e4 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024 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 "initlocalcertificate_fuzzer.h" + +#include +#include + +#include "accesstoken_kit.h" +#include "access_token.h" +#include "local_code_sign_interface.h" +#include "local_code_sign_service.h" +#include "nativetoken_kit.h" +#include "token_setproc.h" +#include "fuzz_common.h" + +using namespace OHOS::Security::CodeSign; +using namespace OHOS::Security::AccessToken; + +namespace OHOS { + static uint64_t NativeTokenSet(const char *caller) + { + uint64_t tokenId = GetSelfTokenID(); + uint64_t mockTokenId = AccessTokenKit::GetNativeTokenId(caller); + SetSelfTokenID(mockTokenId); + return tokenId; + } + static void NativeTokenReset(uint64_t tokenId) + { + SetSelfTokenID(tokenId); + } + + bool InitLocalCertificateStubFuzzTest(const uint8_t *data, size_t size) + { + if ((data == nullptr) || (size == 0)) { + return false; + } + + SignInfoRandomGenerator fuzzData(data, size); + uint8_t challengeData = fuzzData.GetData(); + MessageParcel datas; + datas.WriteInterfaceToken(LocalCodeSignInterface::GetDescriptor()); + if (!datas.WriteBuffer(&challengeData, sizeof(challengeData))) { + return false; + } + + uint32_t code = static_cast(LocalCodeSignInterfaceCode::INIT_LOCAL_CERTIFICATE); + MessageParcel reply; + MessageOption option; + uint64_t selfTokenId = NativeTokenSet("key_enable"); + DelayedSingleton::GetInstance()->OnStart(); + DelayedSingleton::GetInstance()->OnRemoteRequest(code, datas, reply, option); + DelayedSingleton::GetInstance()->OnStop(); + NativeTokenReset(selfTokenId); + return true; + } +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + /* Run your code on data */ + OHOS::InitLocalCertificateStubFuzzTest(data, size); + return 0; +} \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.h b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.h new file mode 100644 index 0000000..f90e24d --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/initlocalcertificate_fuzzer.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2024 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 TEST_FUZZTEST_INITLOCALCERTIFICATE_FUZZER_H +#define TEST_FUZZTEST_INITLOCALCERTIFICATE_FUZZER_H + +#define FUZZ_PROJECT_NAME "initlocalcertificate_fuzzer" + +#endif // TEST_FUZZTEST_INITLOCALCERTIFICATE_FUZZER_H \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/project.xml b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/project.xml new file mode 100644 index 0000000..e7b69a5 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/initlocalcertificate_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/BUILD.gn b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/BUILD.gn new file mode 100644 index 0000000..4a32fbb --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/BUILD.gn @@ -0,0 +1,75 @@ +# Copyright (c) 2023-2024 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. + +import("//build/config/features.gni") +import("//build/test.gni") +import("../../../../code_signature.gni") + +ohos_fuzztest("SignLocalCodeFuzzTest") { + module_out_path = "${fuzz_module_output_path}" + fuzz_config_file = "." + + sources = [ "signlocalcode_fuzzer.cpp" ] + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + ] + deps = [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk", + "${code_signature_root_dir}/test/common:code_sign_test_common_source_set", + ] + + include_dirs = [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include", + "${code_signature_root_dir}/services/local_code_sign/include", + ] + external_deps = [ + "access_token:libnativetoken", + "access_token:libtoken_setproc", + ] + + sources += [ + "${code_signature_root_dir}/services/local_code_sign/src/local_code_sign_service.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/local_code_sign_stub.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp", + "${code_signature_root_dir}/services/local_code_sign/src/permission_utils.cpp", + "${code_signature_root_dir}/utils/src/cert_utils.cpp", + "${code_signature_root_dir}/utils/src/file_helper.cpp", + ] + + include_dirs += [ + "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include", + "${code_signature_root_dir}/utils/include", + ] + public_configs = [ "${code_signature_root_dir}:common_public_config" ] + configs = [ "${code_signature_root_dir}:common_utils_config" ] + deps += [ "${code_signature_root_dir}/utils:fsverity_sign_src_set" ] + external_deps += [ + "access_token:libaccesstoken_sdk", + "access_token:libtokenid_sdk", + "c_utils:utils", + "eventhandler:libeventhandler", + "fsverity-utils:libfsverity_utils", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "huks:libhukssdk", + "init:libbegetutil", + "ipc:ipc_core", + "openssl:libcrypto_shared", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + ] +} diff --git a/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/corpus/init b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/corpus/init new file mode 100644 index 0000000..bd91755 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/corpus/init @@ -0,0 +1,14 @@ +# Copyright (c) 2023 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. + +123456data/local/ark-cache/tmp/demo.an \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/project.xml b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/project.xml new file mode 100644 index 0000000..9f9a252 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 1000 + + 300 + + 4096 + + \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.cpp b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.cpp new file mode 100644 index 0000000..e282562 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2023 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 "signlocalcode_fuzzer.h" + +#include +#include + +#include "accesstoken_kit.h" +#include "access_token.h" +#include "local_code_sign_interface.h" +#include "local_code_sign_service.h" +#include "nativetoken_kit.h" +#include "token_setproc.h" +#include "fuzz_common.h" + +using namespace OHOS::Security::CodeSign; +using namespace OHOS::Security::AccessToken; + +namespace OHOS { + static uint64_t NativeTokenSet(const char *caller) + { + uint64_t tokenId = GetSelfTokenID(); + uint64_t mockTokenId = AccessTokenKit::GetNativeTokenId(caller); + SetSelfTokenID(mockTokenId); + return tokenId; + } + static void NativeTokenReset(uint64_t tokenId) + { + SetSelfTokenID(tokenId); + } + + bool SignLocalCodeStubFuzzTest(const uint8_t *data, size_t size) + { + if ((data == nullptr) || (size == 0)) { + return false; + } + + SignInfoRandomGenerator fuzzData(data, size); + std::string ownerID; + std::string filePath; + fuzzData.GenerateString(ownerID); + fuzzData.GenerateFilePath(filePath); + MessageParcel datas; + datas.WriteInterfaceToken(LocalCodeSignInterface::GetDescriptor()); + if (!datas.WriteString(ownerID)) { + return false; + } + + if (!datas.WriteString(filePath)) { + return false; + } + + uint32_t code = static_cast(LocalCodeSignInterfaceCode::SIGN_LOCAL_CODE); + MessageParcel reply; + MessageOption option; + uint64_t selfTokenId = NativeTokenSet("compiler_service"); + DelayedSingleton::GetInstance()->OnStart(); + DelayedSingleton::GetInstance()->OnRemoteRequest(code, datas, reply, option); + DelayedSingleton::GetInstance()->OnStop(); + NativeTokenReset(selfTokenId); + return true; + } +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + /* Run your code on data */ + OHOS::SignLocalCodeStubFuzzTest(data, size); + return 0; +} \ No newline at end of file diff --git a/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.h b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.h new file mode 100644 index 0000000..5d59705 --- /dev/null +++ b/test/fuzztest/local_code_sign_stub/signlocalcode_fuzzer/signlocalcode_fuzzer.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2023 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 TEST_FUZZTEST_SIGNLOCALCODE_FUZZER_H +#define TEST_FUZZTEST_SIGNLOCALCODE_FUZZER_H + +#define FUZZ_PROJECT_NAME "signlocalcode_fuzzer" + +#endif // TEST_FUZZTEST_SIGNLOCALCODE_FUZZER_H \ No newline at end of file -- Gitee