14faa1673Sopenharmony_ci/* 24faa1673Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 34faa1673Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44faa1673Sopenharmony_ci * you may not use this file except in compliance with the License. 54faa1673Sopenharmony_ci * You may obtain a copy of the License at 64faa1673Sopenharmony_ci * 74faa1673Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84faa1673Sopenharmony_ci * 94faa1673Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104faa1673Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114faa1673Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124faa1673Sopenharmony_ci * See the License for the specific language governing permissions and 134faa1673Sopenharmony_ci * limitations under the License. 144faa1673Sopenharmony_ci */ 154faa1673Sopenharmony_ci 164faa1673Sopenharmony_ci#ifndef ACCESSCONTROL_SANDBOX_MANAGER_FUZZ_COMMON 174faa1673Sopenharmony_ci#define ACCESSCONTROL_SANDBOX_MANAGER_FUZZ_COMMON 184faa1673Sopenharmony_ci#include <vector> 194faa1673Sopenharmony_ci#include "policy_info.h" 204faa1673Sopenharmony_ci#include "securec.h" 214faa1673Sopenharmony_ci 224faa1673Sopenharmony_cinamespace OHOS { 234faa1673Sopenharmony_cinamespace AccessControl { 244faa1673Sopenharmony_cinamespace SandboxManager { 254faa1673Sopenharmony_ciclass PolicyInfoRandomGenerator { 264faa1673Sopenharmony_cipublic: 274faa1673Sopenharmony_ci PolicyInfoRandomGenerator(const uint8_t *data, const size_t size) 284faa1673Sopenharmony_ci : data_(data), dataLenth_(size) 294faa1673Sopenharmony_ci {} 304faa1673Sopenharmony_ci template <class T> T GetData() 314faa1673Sopenharmony_ci { 324faa1673Sopenharmony_ci T object{}; 334faa1673Sopenharmony_ci size_t objectSize = sizeof(object); 344faa1673Sopenharmony_ci if (data_ == nullptr || objectSize > dataLenth_ - basePos) { 354faa1673Sopenharmony_ci basePos = 0; // reset read point 364faa1673Sopenharmony_ci return object; // return empty obj 374faa1673Sopenharmony_ci } 384faa1673Sopenharmony_ci errno_t ret = memcpy_s(&object, objectSize, data_ + basePos, objectSize); 394faa1673Sopenharmony_ci if (ret != EOK) { 404faa1673Sopenharmony_ci return {}; 414faa1673Sopenharmony_ci } 424faa1673Sopenharmony_ci basePos += objectSize; 434faa1673Sopenharmony_ci return object; 444faa1673Sopenharmony_ci } 454faa1673Sopenharmony_ci 464faa1673Sopenharmony_ci void GeneratePolicyInfo(PolicyInfo &policyInfo); 474faa1673Sopenharmony_ci void GeneratePolicyInfoVec(std::vector<PolicyInfo> &policyInfoVec); 484faa1673Sopenharmony_ci void GenerateString(std::string &str); 494faa1673Sopenharmony_ci void GenerateStringVec(std::vector<std::string> &strVec); 504faa1673Sopenharmony_ciprivate: 514faa1673Sopenharmony_ci const uint8_t *data_; 524faa1673Sopenharmony_ci const size_t dataLenth_; 534faa1673Sopenharmony_ci size_t basePos = 0; 544faa1673Sopenharmony_ci}; 554faa1673Sopenharmony_ci} 564faa1673Sopenharmony_ci} 574faa1673Sopenharmony_ci} 584faa1673Sopenharmony_ci#endif