From 3c51052d49f83d1f28173ce45f98c561f6bf96cc Mon Sep 17 00:00:00 2001 From: Dragos Oancea <dragos@signalwire.com> Date: Fri, 28 Feb 2020 14:02:34 +0000 Subject: [PATCH] [mod_vlc] scan-build: Access to field 'context' results in a dereference of a null pointer (loaded from variable 'tech_pvt'); Access to field 'pool' results in a dereference of a null pointer (loaded from variable 'acontext') --- src/mod/formats/mod_vlc/mod_vlc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index 45d6d19de0..aa6d8d36fc 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -593,9 +593,12 @@ static switch_status_t av_init_handle(switch_file_handle_t *handle, switch_image int argc = 2; vlc_video_context_t *vcontext; + if (!acontext) { + return SWITCH_STATUS_FALSE; + } opts[0] = *vlc_args; - if (acontext) opts[1] = switch_core_sprintf(acontext->pool, "--sout=%s", acontext->path); + opts[1] = switch_core_sprintf(acontext->pool, "--sout=%s", acontext->path); pool = acontext->pool; @@ -2250,9 +2253,7 @@ static switch_status_t channel_on_consume_media(switch_core_session_t *session) static switch_status_t channel_on_destroy(switch_core_session_t *session) { - vlc_private_t *tech_pvt = switch_core_session_get_private(session); - - switch_assert(tech_pvt && tech_pvt->context); + vlc_private_t *tech_pvt; if ((tech_pvt = switch_core_session_get_private(session))) { @@ -2267,6 +2268,8 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) switch_media_handle_destroy(session); } + switch_assert(tech_pvt && tech_pvt->context); + switch_yield(50000); if (tech_pvt->context->mp) libvlc_media_player_stop(tech_pvt->context->mp);