From aa298643170d7a1e9d81f27a13b54ae1d60a05f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 25 Oct 2019 01:39:05 +0300 Subject: [PATCH] tee: Lock mutex before reading the removed flag of the pads Otherwise we're not guaranteed to read the very latest value that another thread might've written in there when the pad was released, and could instead work with an old value. --- plugins/elements/gsttee.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/elements/gsttee.c b/plugins/elements/gsttee.c index f93350941d..5b33125900 100644 --- a/plugins/elements/gsttee.c +++ b/plugins/elements/gsttee.c @@ -899,12 +899,14 @@ gst_tee_handle_data (GstTee * tee, gpointer data, gboolean is_list) ret = gst_pad_push (pad, GST_BUFFER_CAST (data)); } + GST_OBJECT_LOCK (tee); if (GST_TEE_PAD_CAST (pad)->removed) ret = GST_FLOW_NOT_LINKED; if (ret == GST_FLOW_NOT_LINKED && tee->allow_not_linked) { ret = GST_FLOW_OK; } + GST_OBJECT_UNLOCK (tee); gst_object_unref (pad);