CameraMetadataNative: Fix FD leak in dump.
Always close the read end of the socketpair. In addition, return
early if pthread_create fails. If we don't do this, we risk blocking
forever on the read() and/or calling pthread_join on an undefined
pthread_t.
Test: run cts -m CtsCameraTestCases;
Change-Id: I9adb872ac2dbca2474e04707b77945b0a08d9432
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index c11ce0f..d8eb7d2 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -442,10 +442,12 @@
if (threadRet != 0) {
close(writeFd);
+ close(readFd);
jniThrowExceptionFmt(env, "java/io/IOException",
"Failed to create thread for writing (errno = %#x, message = '%s')",
threadRet, strerror(threadRet));
+ return;
}
}
@@ -476,6 +478,8 @@
} else if (!logLine.isEmpty()) {
ALOGD("%s", logLine.string());
}
+
+ close(readFd);
}
int res;