source: fix memory leak & null pointer dereference 71/56071/2 accepted/tizen/ivi/20160218.022954 accepted/tizen/mobile/20160104.224734 accepted/tizen/tv/20160104.224754 accepted/tizen/wearable/20160104.224814 submit/tizen/20160104.083437 submit/tizen_common/20160218.142243 submit/tizen_ivi/20160217.000000 submit/tizen_ivi/20160217.000001
authorPark Kyoung Won <kw0712.park@samsung.com>
Mon, 4 Jan 2016 05:58:07 +0000 (14:58 +0900)
committerPark Kyoung Won <kw0712.park@samsung.com>
Mon, 4 Jan 2016 06:28:36 +0000 (15:28 +0900)
- Allocations via g_malloc were not cleaned up when prepare_elements
  returned, so use g_free to free the "elem" resource.
- Fix null pointer dereference bugs.

Change-Id: I07345cbb084cc050337c87e67860b185fd976cc9
Signed-off-by: Park Kyoung Won <kw0712.park@samsung.com>
src/gstmaruaudenc.c
src/gstmaruinterface3.c
src/gstmaruviddec.c

index d58afeb..cd7d939 100644 (file)
@@ -292,9 +292,11 @@ gst_maruaudenc_set_format (GstAudioEncoder *encoder, GstAudioInfo *info)
   */
   if (!maruaudenc->context) {
     GST_ERROR("ctx NULL");
+    return FALSE;
   }
   if (!maruaudenc->context->codec) {
     GST_ERROR("codec NULL");
+    return FALSE;
   }
   gst_maru_audioinfo_to_context (info, maruaudenc->context);
 
index 68e4fbb..616212c 100644 (file)
@@ -680,6 +680,7 @@ prepare_elements (int fd)
     elements = g_list_append (elements, &elem[i]);
   }
 
+  g_free (elem);
   return elements;
 }
 
index f8579c0..97f78ca 100644 (file)
@@ -354,11 +354,11 @@ gst_marudec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state)
   gboolean ret = FALSE;
 
   marudec = (GstMaruVidDec *) decoder;
-  oclass = (GstMaruVidDecClass *) (G_OBJECT_GET_CLASS (marudec));
   if (!marudec) {
       GST_ERROR ("invalid marudec");
     return FALSE;
   }
+  oclass = (GstMaruVidDecClass *) (G_OBJECT_GET_CLASS (marudec));
   if (marudec->last_caps != NULL &&
       gst_caps_is_equal (marudec->last_caps, state->caps)) {
     return TRUE;