Fix ASAN issue : heap-use-after-free 82/245882/2
authorJeongmo Yang <jm80.yang@samsung.com>
Mon, 19 Oct 2020 05:59:31 +0000 (14:59 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Mon, 19 Oct 2020 06:24:44 +0000 (15:24 +0900)
- Prevent to access freed element in gstreamer asynchronous callback.

[Version] 0.10.219
[Issue Type] ASAN

Change-Id: I094947f7293bf6db3b0e7e359829961c47377377
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/mm_camcorder_internal.c

index ca631af..2284ad7 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.218
+Version:    0.10.219
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 24f4eb4..b4a0859 100644 (file)
@@ -3532,14 +3532,17 @@ static gboolean __mmcamcorder_handle_gst_error(MMHandleType handle, GstMessage *
 
        mmf_return_val_if_fail(hcamcorder, FALSE);
        mmf_return_val_if_fail(error, FALSE);
+
        sc = MMF_CAMCORDER_SUBCONTEXT(handle);
        mmf_return_val_if_fail(sc, FALSE);
 
-       MMCAM_LOG_INFO("");
+       MMCAM_LOG_INFO("error code %d", error->code);
+
+       mmf_return_val_if_fail(hcamcorder->state >= MM_CAMCORDER_STATE_READY, FALSE);
 
        /* filtering filesink related errors */
        if (hcamcorder->state == MM_CAMCORDER_STATE_RECORDING &&
-           (error->code ==  GST_RESOURCE_ERROR_WRITE || error->code ==  GST_RESOURCE_ERROR_SEEK)) {
+           (error->code == GST_RESOURCE_ERROR_WRITE || error->code == GST_RESOURCE_ERROR_SEEK)) {
                if (sc->ferror_count == 2 && sc->ferror_send == FALSE) {
                        sc->ferror_send = TRUE;
                        msg.param.code = __mmcamcorder_gst_handle_resource_error(handle, error->code, message);