From 17215f65c916f6f7ff6430734c47c4936da3d3d0 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Fri, 7 Apr 2017 10:19:43 +0100 Subject: gstaggregator: fix event use after free https://bugzilla.gnome.org/show_bug.cgi?id=781017 --- gst-libs/gst/base/gstaggregator.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c index 7e8c5be44..d693541ea 100644 --- a/gst-libs/gst/base/gstaggregator.c +++ b/gst-libs/gst/base/gstaggregator.c @@ -2351,17 +2351,12 @@ gst_aggregator_pad_event_func (GstPad * pad, GstObject * parent, } if (event) { + gboolean is_caps = (GST_EVENT_TYPE (event) == GST_EVENT_CAPS); + if (!klass->sink_event (self, aggpad, event)) { /* Copied from GstPad to convert boolean to a GstFlowReturn in * the event handling func */ - switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_CAPS: - ret = GST_FLOW_NOT_NEGOTIATED; - break; - default: - ret = GST_FLOW_ERROR; - break; - } + ret = is_caps ? GST_FLOW_NOT_NEGOTIATED : GST_FLOW_ERROR; } } -- cgit v1.2.1