From 8c236a9f2e681fa4756a9781b35fc53c1380cf61 Mon Sep 17 00:00:00 2001 From: Martin Kelly Date: Thu, 19 May 2016 09:25:57 -0700 Subject: [PATCH] ahc: fix potential NULL deref This bug was found via cppcheck static analysis. If android.hardware.Camera.getParameters returns NULL, then object will be NULL, and we won't allocate params. This means that the GST_DEBUG statement referencing params->object will be invalid. Fix this by exiting early if android.hardware.Camera.getParameters returns NULL. https://bugzilla.gnome.org/show_bug.cgi?id=766638 --- .../gst-android-hardware-camera.c | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sys/androidmedia/gst-android-hardware-camera.c b/sys/androidmedia/gst-android-hardware-camera.c index 6b32ed5ce8..c22129f09f 100644 --- a/sys/androidmedia/gst-android-hardware-camera.c +++ b/sys/androidmedia/gst-android-hardware-camera.c @@ -2284,17 +2284,19 @@ gst_ah_camera_get_parameters (GstAHCamera * self) g_clear_error (&err); return NULL; } + if (!object) { + GST_WARNING ("android.hardware.Camera.getParameter is NULL"); + return NULL; + } - if (object) { - params = g_slice_new0 (GstAHCParameters); - params->object = gst_amc_jni_object_ref (env, object); - gst_amc_jni_object_local_unref (env, object); - if (!params->object) { - GST_ERROR ("Failed to create global reference"); - (*env)->ExceptionClear (env); - g_slice_free (GstAHCParameters, params); - return NULL; - } + params = g_slice_new0 (GstAHCParameters); + params->object = gst_amc_jni_object_ref (env, object); + gst_amc_jni_object_local_unref (env, object); + if (!params->object) { + GST_ERROR ("Failed to create global reference"); + (*env)->ExceptionClear (env); + g_slice_free (GstAHCParameters, params); + return NULL; } GST_DEBUG ("return parameters %p", params->object);