decklinkvideosrc: fix use-after-free in error code path
authorTim-Philipp Müller <tim@centricular.com>
Tue, 10 May 2016 08:40:38 +0000 (09:40 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 10 May 2016 08:40:38 +0000 (09:40 +0100)
sys/decklink/gstdecklinkvideosrc.cpp

index 8854c1b6c321310fef455854d10073e16dcf0333..a795f204ce720c2e6ae4c28acaa64fe095b2d672 100644 (file)
@@ -567,10 +567,10 @@ gst_decklink_video_src_create (GstPushSrc * bsrc, GstBuffer ** buffer)
       self->caps_mode = f->mode;
     } else {
       g_mutex_unlock (&self->lock);
-      capture_frame_free (f);
       GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
           ("Invalid mode in captured frame"),
           ("Mode set to %d but captured %d", self->caps_mode, f->mode));
+      capture_frame_free (f);
       return GST_FLOW_NOT_NEGOTIATED;
     }
   }
@@ -582,10 +582,10 @@ gst_decklink_video_src_create (GstPushSrc * bsrc, GstBuffer ** buffer)
       self->caps_format = f->format;
     } else {
       g_mutex_unlock (&self->lock);
-      capture_frame_free (f);
       GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
           ("Invalid pixel format in captured frame"),
           ("Format set to %d but captured %d", self->caps_format, f->format));
+      capture_frame_free (f);
       return GST_FLOW_NOT_NEGOTIATED;
     }
   }