gstaggregator: fix event use after free
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 7 Apr 2017 09:19:43 +0000 (10:19 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 8 May 2017 16:04:56 +0000 (18:04 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=781017

gst-libs/gst/base/gstaggregator.c

index 7e8c5be443c732c35068afbeee0501cf12375180..d693541eab3ebfd4e179a2fe5feeb507d85beb5b 100644 (file)
@@ -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;
     }
   }