From 465e173018f4a3f6d8f840db2d24c440ca5c3e75 Mon Sep 17 00:00:00 2001 From: Zhu Guodong Date: Tue, 23 May 2023 16:22:24 +0800 Subject: [PATCH] replace memcpy with memcpy_s in mindir --- mindspore/lite/mindir/BUILD.gn | 2 ++ .../lite/mindir/src/mindir_memory_manager.cc | 13 ++++++++++--- mindspore/lite/mindir/src/mindir_tensor.cc | 17 ++++++++++++----- mindspore/lite/mindir/src/utils.cc | 8 +++++++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/mindspore/lite/mindir/BUILD.gn b/mindspore/lite/mindir/BUILD.gn index 7bb190ae..e260a12f 100644 --- a/mindspore/lite/mindir/BUILD.gn +++ b/mindspore/lite/mindir/BUILD.gn @@ -26,6 +26,7 @@ ohos_shared_library("mindir_lib") { "include", "inner_headers", "//third_party/flatbuffers/include", + "//third_party/bounds_checking_function/include", ] sources = [ "../src/common/log.cc", @@ -44,6 +45,7 @@ ohos_shared_library("mindir_lib") { "hdf_core:libhdi", "hilog_native:libhilog", "ipc:ipc_core", + "bounds_checking_function:libsec_shared", ] configs = ["../:disable_android"] defines = [ "MS_COMPILE_OHOS" ] diff --git a/mindspore/lite/mindir/src/mindir_memory_manager.cc b/mindspore/lite/mindir/src/mindir_memory_manager.cc index c775fa70..88c78d25 100644 --- a/mindspore/lite/mindir/src/mindir_memory_manager.cc +++ b/mindspore/lite/mindir/src/mindir_memory_manager.cc @@ -1,7 +1,9 @@ #include "mindir_memory_manager.h" -#include "src/common/log.h" -#include "utils.h" #include +#include "securec.h" +#include "utils.h" +#include "src/common/log.h" + namespace mindspore { namespace lite { namespace { @@ -29,7 +31,12 @@ void *MindIRMemoryManager::CopyFbbToNewMemory(flatbuffers::FlatBufferBuilder &fb fbb.Clear(); return nullptr; } - memcpy(buff, fbb.GetBufferPointer(), fbb.GetSize()); + auto ret = memcpy_s(buff, fbb.GetSize(), fbb.GetBufferPointer(), fbb.GetSize()); + if (ret != EOK) { + MS_LOG(ERROR) << "memcpy failed, ret:" << ret; + fbb.Clear(); + return nullptr; + } fbb.Clear(); return buff; } diff --git a/mindspore/lite/mindir/src/mindir_tensor.cc b/mindspore/lite/mindir/src/mindir_tensor.cc index 2e453438..9ec2d0e4 100644 --- a/mindspore/lite/mindir/src/mindir_tensor.cc +++ b/mindspore/lite/mindir/src/mindir_tensor.cc @@ -16,6 +16,7 @@ #include "src/common/log.h" #include "mindir.h" #include "utils.h" +#include "securec.h" #include "mindir_memory_manager.h" #include "nnrt/v1_0/nnrt_types.h" #include "nnrt/v2_0/nnrt_types.h" @@ -259,13 +260,16 @@ OHOS::HDI::Nnrt::V1_0::SharedBuffer MindIR_Tensor_GetData(ConstTensorPtr tensor, } result.fd = buffer_templete.fd; result.bufferSize = buffer_templete.bufferSize; - // MS_LOG(ERROR) << "offset:" << offset << ",src->size():" << value->data()->size(); - memcpy(mmap_ptr + offset, value->data()->data(), value->data()->size()); + auto ret = memcpy_s(mmap_ptr + offset, value->data()->size(), value->data()->data(), value->data()->size()); + if (ret != EOK) { + MS_LOG(ERROR) << "Tensor memcpy failed, ret:" << ret; + return {-1, 0, offset, 0}; + } result.offset = offset; result.dataSize = value->data()->size(); return result; } else { - MS_LOG(WARNING) << "Tensor GetData failed, mmap pointer should not be nullptr"; + MS_LOG(ERROR) << "Tensor GetData failed, mmap pointer should not be nullptr"; return {-1, 0, offset, 0}; } } else { @@ -294,8 +298,11 @@ OHOS::HDI::Nnrt::V2_0::SharedBuffer MindIR_Tensor_GetData_V2_0(ConstTensorPtr te } result.fd = buffer_templete.fd; result.bufferSize = buffer_templete.bufferSize; - // MS_LOG(ERROR) << "offset:" << offset << ",src->size():" << value->data()->size(); - memcpy(mmap_ptr + offset, value->data()->data(), value->data()->size()); + auto ret = memcpy_s(mmap_ptr + offset, value->data()->size(), value->data()->data(), value->data()->size()); + if (ret != EOK) { + MS_LOG(ERROR) << "Tensor memcpy failed, ret:" << ret; + return {-1, 0, offset, 0}; + } result.offset = offset; result.dataSize = value->data()->size(); return result; diff --git a/mindspore/lite/mindir/src/utils.cc b/mindspore/lite/mindir/src/utils.cc index 6a02d6bb..b044f414 100644 --- a/mindspore/lite/mindir/src/utils.cc +++ b/mindspore/lite/mindir/src/utils.cc @@ -14,6 +14,7 @@ * limitations under the License. */ #include "utils.h" +#include "securec.h" #include "src/common/log.h" #include "mindir_memory_manager.h" namespace mindspore { @@ -41,7 +42,12 @@ PrimitivePtr MindIR_CreatePrimitiveFromBuilder(flatbuffers::FlatBufferBuilder &f fbb.Clear(); return nullptr; } - memcpy(buff, fbb.GetBufferPointer(), fbb.GetSize()); + auto ret = memcpy_s(buff, fbb.GetSize(), fbb.GetBufferPointer(), fbb.GetSize()); + if (ret != EOK) { + MS_LOG(ERROR) << "memcpy failed, ret:" << ret; + fbb.Clear(); + return nullptr; + } fbb.Clear(); return buff; } -- 2.34.1