uridecodebin3: Nullify current item after all play items are freed.

There's a potential race condition with this sort of pipelines on
certain systems (depends on the processing load):

GST_DEBUG_DUMP_DOT_DIR=/tmp \
gst-launch-1.0 uridecodebin3 uri=file://stream.mp4 ! glupload ! \
glimagesink --gst-debug=*:4

Right after the pipeline passes from PAUSED to READY, bin_to_dot_file
dumps uridecodebin3 properties, but current uri and suburi might be
already freed, causing a potential use-after-freed.

This patch makes NULL the current item right after all the play items
are freed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1353>
This commit is contained in:
Víctor Manuel Jáquez Leal 2021-11-16 13:14:25 +01:00
parent 3729704132
commit 6d7dc93a45

View file

@ -1116,6 +1116,7 @@ free_play_items (GstURIDecodeBin3 * dec)
g_list_free (dec->play_items);
dec->play_items = NULL;
dec->current = NULL;
}
static GstStateChangeReturn