fix double free 07/151107/1 accepted/tizen/unified/20170920.081149 submit/tizen/20170920.023434
authorSeokHoon Lee <andy.shlee@samsung.com>
Wed, 20 Sep 2017 01:41:10 +0000 (10:41 +0900)
committerSeokHoon Lee <andy.shlee@samsung.com>
Wed, 20 Sep 2017 01:41:26 +0000 (10:41 +0900)
- remove g_list first,
  unexpected remove_message_all function within callback free list item first.
  so that, FREE after callback cause double free.

Signed-off-by: SeokHoon Lee <andy.shlee@samsung.com>
Change-Id: I28790e0d64daa3ecf3de79208d742ec6234041e7

packaging/libmm-streamrecorder.spec
src/mm_streamrecorder_gstdispatch.c

index 26fb19d..6807f2a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-streamrecorder
 Summary:    Media Stream Recorder library
-Version:    0.0.16
+Version:    0.0.17
 Release:    0
 Group:      Multimedia/Other
 License:    Apache-2.0
index 9ff61cd..8a0cf6a 100644 (file)
@@ -302,6 +302,12 @@ gboolean _mmstreamrecorder_msg_callback(void *data)
                goto MSG_CALLBACK_DONE;
        }
 
+       _MMSTREAMRECORDER_LOCK((MMHandleType) hstreamrecorder);
+       if (hstreamrecorder->msg_data)
+               hstreamrecorder->msg_data = g_list_remove(hstreamrecorder->msg_data, item);
+
+       _MMSTREAMRECORDER_UNLOCK((MMHandleType) hstreamrecorder);
+
        /* _mmstreamrec_dbg_log("msg id:%x, msg_cb:%p, msg_data:%p, item:%p", item->id, hstreamrecorder->msg_cb, hstreamrecorder->msg_data, item); */
        _MMSTREAMRECORDER_LOCK_MESSAGE_CALLBACK(hstreamrecorder);
 
@@ -310,12 +316,6 @@ gboolean _mmstreamrecorder_msg_callback(void *data)
 
        _MMSTREAMRECORDER_UNLOCK_MESSAGE_CALLBACK(hstreamrecorder);
 
-       _MMSTREAMRECORDER_LOCK((MMHandleType) hstreamrecorder);
-       if (hstreamrecorder->msg_data)
-               hstreamrecorder->msg_data = g_list_remove(hstreamrecorder->msg_data, item);
-
-       _MMSTREAMRECORDER_UNLOCK((MMHandleType) hstreamrecorder);
-
 MSG_CALLBACK_DONE:
        /* release allocated memory */
        if (item->id == MM_MESSAGE_STREAMRECORDER_VIDEO_CAPTURED ||