From 51b17c2282bf5c08bda63e28e51568dd899bcb17 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Tue, 19 Sep 2023 18:48:03 +0900 Subject: [PATCH] Fix SVACE issues - NULL_AFTER_DEREF [Version] 0.10.299 [Issue Type] SVACE Change-Id: Iee35c03c497a900213b74aa47fb4a9b4b1b68007 Signed-off-by: Jeongmo Yang --- packaging/libmm-camcorder.spec | 2 +- src/mm_camcorder_audiorec.c | 9 ++++++--- src/mm_camcorder_stillshot.c | 6 +++++- src/mm_camcorder_videorec.c | 16 ++++++++++++---- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 3306176..f1fd1be 100755 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -1,6 +1,6 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 0.10.298 +Version: 0.10.299 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_camcorder_audiorec.c b/src/mm_camcorder_audiorec.c index fc8768c..ccc3745 100644 --- a/src/mm_camcorder_audiorec.c +++ b/src/mm_camcorder_audiorec.c @@ -735,10 +735,13 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad if (err < 0) { MMCAM_LOG_WARNING("Get attrs fail. (%s:%x)", err_name, err); SAFE_FREE(err_name); - return err; + return GST_PAD_PROBE_OK; } - gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE); + if (!gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE)) { + MMCAM_LOG_WARNING("map failed : buffer[%p]", buffer); + return GST_PAD_PROBE_OK; + } if (volume == 0) memset(mapinfo.data, 0, mapinfo.size); @@ -756,7 +759,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad hcamcorder->astream_cb, GST_TIME_ARGS(GST_BUFFER_PTS(buffer)), format, channel, mapinfo.size, curdcb); /* CALL audio stream callback */ - if (hcamcorder->astream_cb && buffer && mapinfo.data && mapinfo.size > 0) { + if (hcamcorder->astream_cb && buffer) { MMCamcorderAudioStreamDataType stream; stream.data = (void *)mapinfo.data; diff --git a/src/mm_camcorder_stillshot.c b/src/mm_camcorder_stillshot.c index 0335310..a9b41ea 100644 --- a/src/mm_camcorder_stillshot.c +++ b/src/mm_camcorder_stillshot.c @@ -1469,7 +1469,11 @@ static void __mmcamcorder_get_capture_data_from_buffer(MMCamcorderCaptureDataTyp memset(&mapinfo, 0x0, sizeof(GstMapInfo)); - gst_buffer_map(gst_sample_get_buffer(sample), &mapinfo, GST_MAP_READ); + if (!gst_buffer_map(gst_sample_get_buffer(sample), &mapinfo, GST_MAP_READ)) { + MMCAM_LOG_ERROR("map failed : buffer[%p]", gst_sample_get_buffer(sample)); + goto GET_FAILED; + } + capture_data->data = mapinfo.data; capture_data->format = pixtype; gst_structure_get(structure, diff --git a/src/mm_camcorder_videorec.c b/src/mm_camcorder_videorec.c index dbebd72..1f2a0a3 100644 --- a/src/mm_camcorder_videorec.c +++ b/src/mm_camcorder_videorec.c @@ -1462,7 +1462,12 @@ static GstPadProbeReturn __mmcamcorder_video_dataprobe_encoded(GstPad *pad, GstP return GST_PAD_PROBE_DROP; } - gst_buffer_map(buffer, &mapinfo, GST_MAP_READ); + if (!gst_buffer_map(buffer, &mapinfo, GST_MAP_READ)) { + MMCAM_LOG_WARNING("map failed : buffer[%p]", buffer); + return GST_PAD_PROBE_OK; + } + + buffer_size = mapinfo.size; gst_buffer_unmap(buffer, &mapinfo); @@ -1791,12 +1796,15 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_audio_mute(GstPad *pad, G if (err != MM_ERROR_NONE) { MMCAM_LOG_WARNING("Get attrs fail. (%s:%x)", err_name, err); SAFE_FREE(err_name); - return err; + return GST_PAD_PROBE_OK; } memset(&mapinfo, 0x0, sizeof(GstMapInfo)); - gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE); + if (!gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE)) { + MMCAM_LOG_WARNING("map failed : buffer[%p]", buffer); + return GST_PAD_PROBE_OK; + } /* Set audio stream NULL */ if (volume == 0.0) @@ -1806,7 +1814,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_audio_mute(GstPad *pad, G GST_TIME_ARGS(GST_BUFFER_PTS(buffer)), hcamcorder->astream_cb, format, channel, mapinfo.size); /* CALL audio stream callback */ - if (hcamcorder->astream_cb && buffer && mapinfo.data && mapinfo.size > 0) { + if (hcamcorder->astream_cb && buffer) { MMCamcorderAudioStreamDataType stream; if (_mmcamcorder_get_state((MMHandleType)hcamcorder) < MM_CAMCORDER_STATE_PREPARE) { -- 2.34.1