diff --git a/frameworks/innerkitsimpl/common/src/pixel_map.cpp b/frameworks/innerkitsimpl/common/src/pixel_map.cpp index 821d12f0cab52123bf1d3f99e2aedb040cde8887..8453b772ddba5210008a0f0031a366b62a2036f2 100644 --- a/frameworks/innerkitsimpl/common/src/pixel_map.cpp +++ b/frameworks/innerkitsimpl/common/src/pixel_map.cpp @@ -2346,7 +2346,11 @@ bool PixelMap::WriteFileDescriptor(Parcel &parcel, int fd) return false; } sptr descriptor = new IPCFileDescriptor(dupFd); - return parcel.WriteObject(descriptor); + if (!parcel.WriteObject(descriptor)) { + ::close(dupFd); + return false; + } + return true; #else IMAGE_LOGE("[Pixemap] Not support Cross-Platform"); return false; diff --git a/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp b/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp index 43464752b2b709a1d61181e016df240925b973b2..79fdbe34803f27ee370f9d5f039b299ac441494d 100644 --- a/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp +++ b/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp @@ -87,6 +87,7 @@ uint8_t *PixelMapParcel::ReadAshmemDataFromParcel(OHOS::MessageParcel& data, int } if (!CheckAshmemSize(fd, bufferSize)) { IMAGE_LOGE("bufferSize does not match the fileDescriptor"); + ::close(fd); return nullptr; } void* ptr = ::mmap(nullptr, bufferSize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);