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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1411>
This commit is contained in:
Jan Alexander Steffens (heftig) 2020-07-07 13:33:53 +02:00
parent 9e977832c1
commit cba9ba9b38

View file

@ -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);