112e714ceSopenharmony_ci/* 212e714ceSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 312e714ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 412e714ceSopenharmony_ci * you may not use this file except in compliance with the License. 512e714ceSopenharmony_ci * You may obtain a copy of the License at 612e714ceSopenharmony_ci * 712e714ceSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 812e714ceSopenharmony_ci * 912e714ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1012e714ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1112e714ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1212e714ceSopenharmony_ci * See the License for the specific language governing permissions and 1312e714ceSopenharmony_ci * limitations under the License. 1412e714ceSopenharmony_ci */ 1512e714ceSopenharmony_ci 1612e714ceSopenharmony_ci#ifndef TEST_FUZZTEST_GETDATA_H 1712e714ceSopenharmony_ci#define TEST_FUZZTEST_GETDATA_H 1812e714ceSopenharmony_ci 1912e714ceSopenharmony_ci#include <cstdint> 2012e714ceSopenharmony_ci 2112e714ceSopenharmony_ci#include "../../common/log.h" 2212e714ceSopenharmony_ci#include "securec.h" 2312e714ceSopenharmony_ci 2412e714ceSopenharmony_cinamespace OHOS { 2512e714ceSopenharmony_cinamespace NeuralNetworkRuntime { 2612e714ceSopenharmony_ciclass Data { 2712e714ceSopenharmony_cipublic: 2812e714ceSopenharmony_ci Data(const uint8_t* data, size_t size) 2912e714ceSopenharmony_ci { 3012e714ceSopenharmony_ci dataFuzz = data; 3112e714ceSopenharmony_ci dataSize = size; 3212e714ceSopenharmony_ci } 3312e714ceSopenharmony_ci 3412e714ceSopenharmony_ci template<class T> T GetData() 3512e714ceSopenharmony_ci { 3612e714ceSopenharmony_ci T object {}; 3712e714ceSopenharmony_ci size_t objectSize = sizeof(object); 3812e714ceSopenharmony_ci if (dataFuzz == nullptr || objectSize > dataSize - dataPos) { 3912e714ceSopenharmony_ci LOGE("[GetData]Data is not enough."); 4012e714ceSopenharmony_ci return {}; 4112e714ceSopenharmony_ci } 4212e714ceSopenharmony_ci if (memcpy_s(&object, objectSize, dataFuzz + dataPos, objectSize) != EOK) { 4312e714ceSopenharmony_ci LOGE("[GetData]Memcpy_s failed."); 4412e714ceSopenharmony_ci return {}; 4512e714ceSopenharmony_ci } 4612e714ceSopenharmony_ci dataPos = dataPos + objectSize; 4712e714ceSopenharmony_ci return object; 4812e714ceSopenharmony_ci } 4912e714ceSopenharmony_ci 5012e714ceSopenharmony_ci const uint8_t* GetNowData() const 5112e714ceSopenharmony_ci { 5212e714ceSopenharmony_ci return dataFuzz + dataPos; 5312e714ceSopenharmony_ci } 5412e714ceSopenharmony_ci 5512e714ceSopenharmony_ci size_t GetNowDataSize() const 5612e714ceSopenharmony_ci { 5712e714ceSopenharmony_ci return dataSize - dataPos; 5812e714ceSopenharmony_ci } 5912e714ceSopenharmony_ci 6012e714ceSopenharmony_ci const uint8_t* GetSpecificData(size_t startPos, size_t& size) const 6112e714ceSopenharmony_ci { 6212e714ceSopenharmony_ci if ((startPos + size) > dataSize) { 6312e714ceSopenharmony_ci size = dataSize - startPos; 6412e714ceSopenharmony_ci } 6512e714ceSopenharmony_ci return dataFuzz + startPos; 6612e714ceSopenharmony_ci } 6712e714ceSopenharmony_ci 6812e714ceSopenharmony_ciprivate: 6912e714ceSopenharmony_ci const uint8_t* dataFuzz {nullptr}; 7012e714ceSopenharmony_ci size_t dataSize {0}; 7112e714ceSopenharmony_ci size_t dataPos {0}; 7212e714ceSopenharmony_ci}; 7312e714ceSopenharmony_ci} // namespace NeuralNetworkRuntime 7412e714ceSopenharmony_ci} // namespace OHOS 7512e714ceSopenharmony_ci 7612e714ceSopenharmony_ci#endif