100600bfbSopenharmony_ci/*
200600bfbSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
300600bfbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
400600bfbSopenharmony_ci * you may not use this file except in compliance with the License.
500600bfbSopenharmony_ci * You may obtain a copy of the License at
600600bfbSopenharmony_ci *
700600bfbSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
800600bfbSopenharmony_ci *
900600bfbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1000600bfbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1100600bfbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1200600bfbSopenharmony_ci * See the License for the specific language governing permissions and
1300600bfbSopenharmony_ci * limitations under the License.
1400600bfbSopenharmony_ci */
1500600bfbSopenharmony_ci
1600600bfbSopenharmony_ci#include <cstddef>
1700600bfbSopenharmony_ci#include <cstdint>
1800600bfbSopenharmony_ci#include <string>
1900600bfbSopenharmony_ci
2000600bfbSopenharmony_cinamespace OHOS {
2100600bfbSopenharmony_cibool SADumpFuzzTest(const uint8_t* data, size_t size)
2200600bfbSopenharmony_ci{
2300600bfbSopenharmony_ci    if (size == 0 || data == nullptr) {
2400600bfbSopenharmony_ci        return true;
2500600bfbSopenharmony_ci    }
2600600bfbSopenharmony_ci    std::string randomData(reinterpret_cast<const char*>(data), size);
2700600bfbSopenharmony_ci    std::unique_ptr<FILE, decltype(&pclose)> fp(popen(("hidumper -s " + randomData).c_str(), "r"), pclose);
2800600bfbSopenharmony_ci    return true;
2900600bfbSopenharmony_ci}
3000600bfbSopenharmony_ci} // namespace OHOS
3100600bfbSopenharmony_ci
3200600bfbSopenharmony_ci/* Fuzzer entry point */
3300600bfbSopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
3400600bfbSopenharmony_ci{
3500600bfbSopenharmony_ci    /* Run your code on data */
3600600bfbSopenharmony_ci    OHOS::SADumpFuzzTest(data, size);
3700600bfbSopenharmony_ci    return 0;
3800600bfbSopenharmony_ci}
39