Fix BufferHubBuffer::Create crash
Change-Id: I4c832c86cc4be9a5622bbd533a71d72c5d669ab1
Fix: 123535377
Test: BufferHub_test BufferHubServer_test VtsHalBufferHubV1_0TargetTest
diff --git a/libs/ui/BufferHubBuffer.cpp b/libs/ui/BufferHubBuffer.cpp
index 9669135..f3856d0 100644
--- a/libs/ui/BufferHubBuffer.cpp
+++ b/libs/ui/BufferHubBuffer.cpp
@@ -180,14 +180,14 @@
return -EINVAL;
}
- const int eventFd = bufferTraits.bufferInfo->data[1];
+ // Import fds. Dup fds because hidl_handle owns the fds.
+ const int eventFd = fcntl(bufferTraits.bufferInfo->data[1], F_DUPFD_CLOEXEC, 0);
if (eventFd < 0) {
ALOGE("%s: Received a invalid event fd!", __FUNCTION__);
return -EINVAL;
}
mEventFd = BufferHubEventFd(eventFd);
- // Import the metadata. Dup since hidl_handle owns the fd
unique_fd ashmemFd(fcntl(bufferTraits.bufferInfo->data[0], F_DUPFD_CLOEXEC, 0));
mMetadata = BufferHubMetadata::Import(std::move(ashmemFd));