From 64b463091cfa0678500cf52d90a84a6bb64b5f07 Mon Sep 17 00:00:00 2001 From: huangshengqing Date: Wed, 18 Sep 2024 11:30:52 +0800 Subject: [PATCH] ff Signed-off-by: huangshengqing --- camera/metadata/src/camera_metadata_info.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/camera/metadata/src/camera_metadata_info.cpp b/camera/metadata/src/camera_metadata_info.cpp index 08f249c4..20be5a3f 100644 --- a/camera/metadata/src/camera_metadata_info.cpp +++ b/camera/metadata/src/camera_metadata_info.cpp @@ -940,21 +940,18 @@ int CameraMetadata::copyMetadataMemory(common_metadata_header_t *dst, camera_met int CameraMetadata::UpdateameraMetadataItemSize(camera_metadata_item_entry_t *item, uint32_t dataCount, common_metadata_header_t *dst, const void *data) { - if (item == nullptr) { - METADATA_ERR_LOG("UpdateameraMetadataItemSize item is null"); + if (item == nullptr || dst == nullptr) { + METADATA_ERR_LOG("UpdateameraMetadataItemSize item is null or dst is null"); return CAM_META_FAILURE; - } else if (item->data_type < META_TYPE_BYTE || item->data_type >= META_NUM_TYPES) { - METADATA_ERR_LOG("UpdateameraMetadataItemSize invalid datatype:%{public}d", item->data_type); + } else if (item->data_type < META_TYPE_BYTE || item->data_type >= META_NUM_TYPES || + item->data.offset > dst->item_count * OHOS_CAMERA_METADATA_TYPE_SIZE[item->data_type]) { + METADATA_ERR_LOG("UpdateameraMetadataItemSize invalid item"); return CAM_META_FAILURE; } size_t dataSize = CalculateCameraMetadataItemDataSize(item->data_type, dataCount); size_t dataPayloadSize = dataCount * OHOS_CAMERA_METADATA_TYPE_SIZE[item->data_type]; size_t oldItemSize = CalculateCameraMetadataItemDataSize(item->data_type, item->count); int32_t ret = CAM_META_SUCCESS; - if (item == nullptr || dst == nullptr) { - METADATA_ERR_LOG("UpdateameraMetadataItemSize item is null or dst is null"); - return CAM_META_FAILURE; - } if (dataSize != oldItemSize) { if (dst->data_capacity < (dst->data_count + dataSize - oldItemSize)) { METADATA_ERR_LOG("UpdateCameraMetadataItemByIndex data_capacity limit reached"); -- Gitee