From f46b4213c89a95aa92e0d4f33bd0a4d14856931c Mon Sep 17 00:00:00 2001 From: zhang Date: Sun, 26 Sep 2021 19:02:38 +0800 Subject: [PATCH] modify unsave function Signed-off-by: zhang --- utils/src/hdf_block_buffer.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/utils/src/hdf_block_buffer.c b/utils/src/hdf_block_buffer.c index 1c61c57b4..e5deb0387 100644 --- a/utils/src/hdf_block_buffer.c +++ b/utils/src/hdf_block_buffer.c @@ -8,6 +8,7 @@ #include "hdf_block_buffer.h" #include "osal_mem.h" +#include "securec.h" static const unsigned int OFFSET = 8; @@ -26,7 +27,10 @@ struct HdfHdfBlockBuffer *HdfHdfBlockBufferNew(const uint8_t *data, uint16_t siz buffer->dataSize = size; buffer->position = 0; if (data != NULL) { - memcpy(buffer->data, data, size); + if (memcpy_s(buffer->data, buffer->dataSize, data, size) != EOK) { + OsalMemFree(buffer); + return NULL; + } } return buffer; } @@ -172,10 +176,9 @@ bool HdfBlockBufferWriteData(struct HdfBlockBuffer *buffer, uint8_t *data, size_ return false; } residualSize = buffer->dataSize - buffer->position; - if (length > residualSize) { + if (memcpy_s(buffer->data + buffer->position, residualSize, data, length) != EOK) { return false; } - memcpy(buffer->data + buffer->position, data, length); buffer->position += length; return true; } @@ -196,17 +199,20 @@ struct HdfBlockBuffer *HdfBlockBufferDuplicate(const struct HdfBlockBuffer *buff if (newBuffer == NULL) { return NULL; } - memcpy(newBuffer->data, buffer->data + start, newBufferSize); + if (memcpy_s(newBuffer->data, newBufferSize, buffer->data + start, newBufferSize) != EOK) { + OsalMemFree(newBuffer); + return NULL; + } + return newBuffer; } bool HdfBlockBufferWriteBuff(struct HdfBlockBuffer *dst, struct HdfBlockBuffer *src) { - if (dst->position + src->dataSize <= dst->dataSize) { - memcpy(&dst->data[dst->position], src->data, src->dataSize); - dst->position += src->dataSize; - return true; + if (memcpy_s(&dst->data[dst->position], dst->dataSize - dst->position, src->data, src->dataSize) != EOK) { + return false; } - return false; + dst->position += src->dataSize; + return true; } -- Gitee