From 85450dd8af27623faba5f8dae15d2ee007dfd36e Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Tue, 25 Jun 2024 08:30:42 +0000 Subject: [PATCH] fix dereference bug Signed-off-by: pxd2022 --- .../buffer/hdi_service/src/mapper_service.cpp | 30 +++++++++++++++---- .../hdi_service/src/metadata_service.cpp | 25 ++++++++++++---- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/display/buffer/hdi_service/src/mapper_service.cpp b/display/buffer/hdi_service/src/mapper_service.cpp index 63f9470b9b..753c0d3429 100644 --- a/display/buffer/hdi_service/src/mapper_service.cpp +++ b/display/buffer/hdi_service/src/mapper_service.cpp @@ -115,7 +115,10 @@ int32_t MapperService::FreeMem(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - vdiImpl_->FreeMem(*handle->Move()); + + BufferHandle* buffer = handle->Move(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + vdiImpl_->FreeMem(*buffer); return HDF_SUCCESS; } @@ -124,7 +127,10 @@ int32_t MapperService::Mmap(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - void* retPtr = vdiImpl_->Mmap(*handle->GetBufferHandle()); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + void* retPtr = vdiImpl_->Mmap(*buffer); CHECK_NULLPOINTER_RETURN_VALUE(retPtr, HDF_FAILURE); return HDF_SUCCESS; } @@ -134,7 +140,10 @@ int32_t MapperService::Unmap(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->Unmap(*handle->GetBufferHandle()); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->Unmap(*buffer); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, HDF_FAILURE, DISPLAY_LOGE(" fail")); return ret; } @@ -144,7 +153,10 @@ int32_t MapperService::FlushCache(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->FlushCache(*handle->GetBufferHandle()); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->FlushCache(*buffer); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, HDF_FAILURE, DISPLAY_LOGE(" fail")); return ret; } @@ -154,7 +166,10 @@ int32_t MapperService::InvalidateCache(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->InvalidateCache(*handle->GetBufferHandle()); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->InvalidateCache(*buffer); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, HDF_FAILURE, DISPLAY_LOGE(" fail")); return ret; } @@ -163,7 +178,10 @@ int32_t MapperService::GetImageLayout(const sptr& handle, V1_2::Im { CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->GetImageLayout(*handle->GetBufferHandle(), layout); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->GetImageLayout(*buffer, layout); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, HDF_FAILURE, DISPLAY_LOGE(" fail")); return ret; } diff --git a/display/buffer/hdi_service/src/metadata_service.cpp b/display/buffer/hdi_service/src/metadata_service.cpp index 4dd872327e..4af569a7d5 100644 --- a/display/buffer/hdi_service/src/metadata_service.cpp +++ b/display/buffer/hdi_service/src/metadata_service.cpp @@ -116,7 +116,10 @@ int32_t MetadataService::RegisterBuffer(const sptr& handle) DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->RegisterBuffer(*handle->GetBufferHandle()); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->RegisterBuffer(*buffer); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, DISPLAY_LOGE(" fail")); return HDF_SUCCESS; } @@ -126,7 +129,10 @@ int32_t MetadataService::SetMetadata(const sptr& handle, uint32_t DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->SetMetadata(*handle->GetBufferHandle(), key, value); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->SetMetadata(*buffer, key, value); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, DISPLAY_LOGE(" fail")); return HDF_SUCCESS; } @@ -136,7 +142,10 @@ int32_t MetadataService::GetMetadata(const sptr& handle, uint32_t DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->GetMetadata(*handle->GetBufferHandle(), key, value); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->GetMetadata(*buffer, key, value); return ret; } @@ -145,7 +154,10 @@ int32_t MetadataService::ListMetadataKeys(const sptr& handle, std: DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->ListMetadataKeys(*handle->GetBufferHandle(), keys); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->ListMetadataKeys(*buffer, keys); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, DISPLAY_LOGE(" fail")); return HDF_SUCCESS; } @@ -155,7 +167,10 @@ int32_t MetadataService::EraseMetadataKey(const sptr& handle, uint DISPLAY_TRACE; CHECK_NULLPOINTER_RETURN_VALUE(handle, HDF_FAILURE); CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - int32_t ret = vdiImpl_->EraseMetadataKey(*handle->GetBufferHandle(), key); + + BufferHandle* buffer = handle->GetBufferHandle(); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_FAILURE); + int32_t ret = vdiImpl_->EraseMetadataKey(*buffer, key); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, DISPLAY_LOGE(" fail")); return HDF_SUCCESS; } -- Gitee