basesink: fix a use after free case
authorFabrice Bellet <fabrice@bellet.info>
Wed, 30 Nov 2016 20:17:55 +0000 (21:17 +0100)
committerArun Raghavan <arun@arunraghavan.net>
Sat, 17 Dec 2016 04:10:25 +0000 (09:40 +0530)
The event may be disposed while being pushed, so we make sure the
debug infrastructure won't use it after the gst_pad_push().

libs/gst/base/gstbasesink.c

index b4c8752..dccf3ce 100644 (file)
@@ -4507,6 +4507,8 @@ gst_base_sink_send_event (GstElement * element, GstEvent * event)
   }
 
   if (forward) {
+    GST_DEBUG_OBJECT (basesink, "sending event %p %" GST_PTR_FORMAT, event,
+        event);
     result = gst_pad_push_event (pad, event);
   } else {
     /* not forwarded, unref the event */
@@ -4515,8 +4517,7 @@ gst_base_sink_send_event (GstElement * element, GstEvent * event)
 
   gst_object_unref (pad);
 
-  GST_DEBUG_OBJECT (basesink, "handled event %p %" GST_PTR_FORMAT ": %d", event,
-      event, result);
+  GST_DEBUG_OBJECT (basesink, "handled event: %d", result);
 
   return result;
 }