Fix coverity issue 06/154706/1 accepted/tizen/unified/20171012.075037 submit/tizen/20171011.082859
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 11 Oct 2017 06:07:22 +0000 (15:07 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 11 Oct 2017 06:29:48 +0000 (15:29 +0900)
1. Unchecked return value : mm_camcorder_videorec.c at line 1330
2. Logically dead code : mm_camcorder_internal.c at line 3918
3. Explicit null dereferenced : mm_camcorder_gstcommon.c at line 373, 1368
4. Explicit null dereferenced : mm_camcorder_videorec.c at line 264

[Version] 0.10.137
[Profile] Common
[Issue Type] Coverity
[Dependency module] N/A

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

index d78fef2..3d981be 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.136
+Version:    0.10.137
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 8a84d36..9d3b27c 100644 (file)
@@ -350,6 +350,11 @@ int _mmcamcorder_create_preview_elements(MMHandleType handle)
        /* Get videosink name */
        _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name);
 
+       if (!videosink_name) {
+               _mmcam_dbg_err("failed to get videosink name");
+               goto pipeline_creation_error;
+       }
+
        _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSINK_QUE, "queue", "videosink_queue", element_list, err);
 
        _mmcam_dbg_log("videosink_name: %s", videosink_name);
@@ -1362,6 +1367,11 @@ int _mmcamcorder_videosink_window_set(MMHandleType handle, type_element* Videosi
 
        _mmcamcorder_conf_get_value_element_name(VideosinkElement, &videosink_name);
 
+       if (!videosink_name) {
+               _mmcam_dbg_err("failed to get videosink name");
+               return MM_ERROR_CAMCORDER_INTERNAL;
+       }
+
        _mmcam_dbg_log("(overlay=%p, size=%d)", overlay, size);
 
        /* Set display handle */
index 99eae25..a7e5151 100644 (file)
@@ -3915,7 +3915,6 @@ void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder, int state_change_by_s
 
                        break;
                }
-               case MM_CAMCORDER_STATE_NULL:
                default:
                        _mmcam_dbg_warn("Already stopped.");
                        break;
index 7bdb7df..4e7b7fb 100644 (file)
@@ -217,6 +217,12 @@ int _mmcamcorder_create_recorder_pipeline(MMHandleType handle)
                &RecordsinkElement);
        _mmcamcorder_conf_get_value_element_name(RecordsinkElement, &gst_element_rsink_name);
 
+       if (!gst_element_rsink_name) {
+               _mmcam_dbg_err("failed to get recordsink name");
+               err = MM_ERROR_CAMCORDER_INTERNAL;
+               goto pipeline_creation_error;
+       }
+
        /* set data probe function */
 
        /* register message cb */
@@ -1321,7 +1327,13 @@ int _mmcamcorder_video_handle_eos(MMHandleType handle)
                info->restart_preview = FALSE;
 
                /* recover preview size */
-               _mmcamcorder_set_camera_resolution(handle, info->preview_width, info->preview_height);
+               if (!_mmcamcorder_set_camera_resolution(handle, info->preview_width, info->preview_height)) {
+                       msg.id = MM_MESSAGE_CAMCORDER_ERROR;
+                       msg.param.code = MM_ERROR_CAMCORDER_INTERNAL;
+                       _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
+                       _mmcam_dbg_err("Failed to set camera resolution %dx%d",
+                               info->preview_width, info->preview_height);
+               }
 
                ret = _mmcamcorder_gst_set_state(handle, sc->element[_MMCAMCORDER_MAIN_PIPE].gst, GST_STATE_PLAYING);
                /* Do not return when error is occurred.