From 2adf40392e91481e793bf9d4a5ba88f2bd6477db Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Tue, 5 Jun 2018 17:52:16 +0100 Subject: [PATCH] media: Check window connect status in ImageWriter ImageWriter clients could pass invalid or already connected surface during initialization. Check the status after trying to connect to the producer interface and raise an exception if necessary. Bug: 80086132 Test: Camera CTS Change-Id: I46810885046a3b89ea18510574c22db27e812a9c --- media/jni/android_media_ImageWriter.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp index f8f7a90b39371..031e373241cbd 100644 --- a/media/jni/android_media_ImageWriter.cpp +++ b/media/jni/android_media_ImageWriter.cpp @@ -252,7 +252,14 @@ static jlong ImageWriter_init(JNIEnv* env, jobject thiz, jobject weakThiz, jobje * after disconnect. MEDIA or CAMERA are treated the same internally. The producer listener * will be cleared after disconnect call. */ - producer->connect(/*api*/NATIVE_WINDOW_API_CAMERA, /*listener*/ctx); + res = producer->connect(/*api*/NATIVE_WINDOW_API_CAMERA, /*listener*/ctx); + if (res != OK) { + ALOGE("%s: Connecting to surface producer interface failed: %s (%d)", + __FUNCTION__, strerror(-res), res); + jniThrowRuntimeException(env, "Failed to connect to native window"); + return 0; + } + jlong nativeCtx = reinterpret_cast(ctx.get()); // Get the dimension and format of the producer.