From fcbaa71461e76ae0e9ee14981430980ea491bb9f Mon Sep 17 00:00:00 2001 From: Sangchul Lee Date: Tue, 30 Aug 2022 17:22:38 +0900 Subject: [PATCH] webrtc_sink/source: Fix resource leaks [Version] 0.3.221 [Issue Type] Coverity defect Change-Id: I318bcb7d6e962df59c36988d02d89d785dc23a7b Signed-off-by: Sangchul Lee --- packaging/capi-media-webrtc.spec | 2 +- src/webrtc_sink.c | 12 ++++++++---- src/webrtc_source.c | 12 ++++++++---- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 5a64d5ce..ef5b4e98 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.3.220 +Version: 0.3.221 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_sink.c b/src/webrtc_sink.c index bdad118e..a34e5335 100644 --- a/src/webrtc_sink.c +++ b/src/webrtc_sink.c @@ -175,10 +175,14 @@ static int __build_videosink(webrtc_s *webrtc, GstElement *decodebin, GstPad *sr /* FIXME: The order of setting property and display is important when 'use-tbm' is true. The reverse does not work */ gst_video_overlay_set_wl_window_wl_surface_id(GST_VIDEO_OVERLAY(videosink), sink->display->overlay_surface_id); - RET_VAL_IF(!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "display-geometry-method"), - WEBRTC_ERROR_INVALID_OPERATION, "could not find 'display-geometry-method' property"); - RET_VAL_IF(!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "visible"), - WEBRTC_ERROR_INVALID_OPERATION, "could not find 'visible' property"); + if (!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "display-geometry-method")) { + LOG_ERROR("could not find 'display-geometry-method' property"); + goto exit; + } + if (!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "visible")) { + LOG_ERROR("could not find 'visible' property"); + goto exit; + } } else if (sink->display->type == WEBRTC_DISPLAY_TYPE_EVAS) { GstCaps *caps; diff --git a/src/webrtc_source.c b/src/webrtc_source.c index 429aab11..ad9b4ba0 100644 --- a/src/webrtc_source.c +++ b/src/webrtc_source.c @@ -2280,10 +2280,14 @@ static int __build_loopback_videosink(webrtc_gst_slot_s *source, GstElement *lin if (source->display->type == WEBRTC_DISPLAY_TYPE_OVERLAY || source->display->type == WEBRTC_DISPLAY_TYPE_ECORE_WL) { gst_video_overlay_set_wl_window_wl_surface_id(GST_VIDEO_OVERLAY(videosink), source->display->overlay_surface_id); - RET_VAL_IF(!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "display-geometry-method"), - WEBRTC_ERROR_INVALID_OPERATION, "could not find 'display-geometry-method' property"); - RET_VAL_IF(!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "visible"), - WEBRTC_ERROR_INVALID_OPERATION, "could not find 'visible' property"); + if (!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "display-geometry-method")) { + LOG_ERROR("could not find 'display-geometry-method' property"); + goto exit; + } + if (!g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(videosink)), "visible")) { + LOG_ERROR("could not find 'visible' property"); + goto exit; + } g_object_set(G_OBJECT(videosink), "display-geometry-method", (gint)source->display->mode, /* 0: letter box, 1: origin size, 2: full screen */ "visible", (gboolean)source->display->visible, -- 2.34.1