192a12a34Sopenharmony_ci/* 292a12a34Sopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd. 392a12a34Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 492a12a34Sopenharmony_ci * you may not use this file except in compliance with the License. 592a12a34Sopenharmony_ci * You may obtain a copy of the License at 692a12a34Sopenharmony_ci * 792a12a34Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 892a12a34Sopenharmony_ci * 992a12a34Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1092a12a34Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1192a12a34Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1292a12a34Sopenharmony_ci * See the License for the specific language governing permissions and 1392a12a34Sopenharmony_ci * limitations under the License. 1492a12a34Sopenharmony_ci */ 1592a12a34Sopenharmony_ci 1692a12a34Sopenharmony_ci#ifndef OHOS_UTILS_H 1792a12a34Sopenharmony_ci#define OHOS_UTILS_H 1892a12a34Sopenharmony_ci 1992a12a34Sopenharmony_ci#include "adapter.h" 2092a12a34Sopenharmony_ci#include "securec.h" 2192a12a34Sopenharmony_ci#include "stdint.h" 2292a12a34Sopenharmony_ci 2392a12a34Sopenharmony_cinamespace OHOS { 2492a12a34Sopenharmony_ciconst uint32_t MAX_STR_SIZE = 4096; 2592a12a34Sopenharmony_ci 2692a12a34Sopenharmony_cistruct Utils { 2792a12a34Sopenharmony_ci static char *Strdup(const char *src) 2892a12a34Sopenharmony_ci { 2992a12a34Sopenharmony_ci if (src == nullptr) { 3092a12a34Sopenharmony_ci return nullptr; 3192a12a34Sopenharmony_ci } 3292a12a34Sopenharmony_ci 3392a12a34Sopenharmony_ci size_t len = strlen(src); 3492a12a34Sopenharmony_ci if (len > MAX_STR_SIZE) { 3592a12a34Sopenharmony_ci return nullptr; 3692a12a34Sopenharmony_ci } 3792a12a34Sopenharmony_ci char *dst = reinterpret_cast<char *>(AdapterMalloc(len + 1)); 3892a12a34Sopenharmony_ci if (dst == nullptr) { 3992a12a34Sopenharmony_ci return nullptr; 4092a12a34Sopenharmony_ci } 4192a12a34Sopenharmony_ci errno_t err = strncpy_s(dst, len + 1, src, len); 4292a12a34Sopenharmony_ci if (err != EOK) { 4392a12a34Sopenharmony_ci AdapterFree(dst); 4492a12a34Sopenharmony_ci return nullptr; 4592a12a34Sopenharmony_ci } 4692a12a34Sopenharmony_ci return dst; 4792a12a34Sopenharmony_ci } 4892a12a34Sopenharmony_ci 4992a12a34Sopenharmony_ci static void *Memdup(const void *src, uint32_t len) 5092a12a34Sopenharmony_ci { 5192a12a34Sopenharmony_ci if ((src == nullptr) || (len == 0) || (len > MAX_STR_SIZE)) { 5292a12a34Sopenharmony_ci return nullptr; 5392a12a34Sopenharmony_ci } 5492a12a34Sopenharmony_ci 5592a12a34Sopenharmony_ci void *dst = AdapterMalloc(len); 5692a12a34Sopenharmony_ci if (dst == nullptr) { 5792a12a34Sopenharmony_ci return nullptr; 5892a12a34Sopenharmony_ci } 5992a12a34Sopenharmony_ci 6092a12a34Sopenharmony_ci int ret = memcpy_s(dst, len, src, len); 6192a12a34Sopenharmony_ci if (ret != 0) { 6292a12a34Sopenharmony_ci AdapterFree(dst); 6392a12a34Sopenharmony_ci return nullptr; 6492a12a34Sopenharmony_ci } 6592a12a34Sopenharmony_ci 6692a12a34Sopenharmony_ci return dst; 6792a12a34Sopenharmony_ci } 6892a12a34Sopenharmony_ci}; // Utils 6992a12a34Sopenharmony_ci} // OHOS 7092a12a34Sopenharmony_ci 7192a12a34Sopenharmony_ci#endif // OHOS_UTILS_H 72