From cba9ba9b38de559de82b54bf66fef0a7f4c1af94 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Tue, 7 Jul 2020 13:33:53 +0200 Subject: [PATCH] mpegtsmux: Avoid crash releasing pad with NULL prog If we release a pad while the muxer is running which has never been used for aggregation (thus it does not have an assigned program), `prog` is NULL. Part-of: --- gst/mpegtsmux/gstbasetsmux.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gst/mpegtsmux/gstbasetsmux.c b/gst/mpegtsmux/gstbasetsmux.c index 7f219fa6c3..462cf0ef06 100644 --- a/gst/mpegtsmux/gstbasetsmux.c +++ b/gst/mpegtsmux/gstbasetsmux.c @@ -1292,13 +1292,15 @@ gst_base_ts_mux_release_pad (GstElement * element, GstPad * pad) GstBaseTsMuxPad *ts_pad = GST_BASE_TS_MUX_PAD (pad); gint pid = ts_pad->pid; - if (ts_pad->prog->pcr_stream == ts_pad->stream) { - tsmux_stream_pcr_unref (ts_pad->prog->pcr_stream); - ts_pad->prog->pcr_stream = NULL; - } - if (tsmux_remove_stream (mux->tsmux, pid, ts_pad->prog)) { - g_hash_table_remove (mux->programs, GINT_TO_POINTER (ts_pad->prog_id)); + if (ts_pad->prog) { + if (ts_pad->prog->pcr_stream == ts_pad->stream) { + tsmux_program_set_pcr_stream (ts_pad->prog, NULL); + } + if (tsmux_remove_stream (mux->tsmux, pid, ts_pad->prog)) { + g_hash_table_remove (mux->programs, GINT_TO_POINTER (ts_pad->prog_id)); + } } + tsmux_resend_pat (mux->tsmux); tsmux_resend_si (mux->tsmux);