1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <cstddef> 17#include <cstdint> 18#include <string> 19 20#include "config_policy_utils.h" 21 22#define FUZZ_PROJECT_NAME "getonecfgfileex_fuzzer" 23 24constexpr size_t MIN_SIZE = 4; 25 26namespace OHOS { 27 bool FuzzGetOneCfgFileEx(const uint8_t* data, size_t size) 28 { 29 std::string userPath(reinterpret_cast<const char*>(data), size / 2); 30 std::string extra(reinterpret_cast<const char*>(data) + size / 2, size - size / 2); 31 int followMode = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]; 32 char buf[MAX_PATH_LEN] = {0}; 33 char *filePath = GetOneCfgFileEx(userPath.c_str(), buf, MAX_PATH_LEN, followMode, extra.c_str()); 34 return filePath != nullptr; 35 } 36} 37 38// Fuzzer entry point. 39extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) 40{ 41 if (data == nullptr || size < MIN_SIZE) { 42 return 0; 43 } 44 // Run your code on data. 45 OHOS::FuzzGetOneCfgFileEx(data, size); 46 return 0; 47}