qt: deactivate context if fill_info fails
authorBo Elmgreen <bo.elmgreen@gmail.com>
Wed, 30 Nov 2022 13:32:52 +0000 (14:32 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 1 Dec 2022 14:21:37 +0000 (14:21 +0000)
Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
activated, which could lead to invalid memory reads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492>

subprojects/gst-plugins-good/ext/qt/gstqtglutility.cc
subprojects/gst-plugins-good/ext/qt6/gstqt6glutility.cc

index ad04f14..84d5618 100644 (file)
@@ -248,6 +248,7 @@ gst_qt_get_gl_wrapcontext (GstGLDisplay * display,
     gst_gl_context_activate(*wrap_glcontext, TRUE);
     if (!gst_gl_context_fill_info (*wrap_glcontext, &error)) {
       GST_ERROR ("failed to retrieve qt context info: %s", error->message);
+      gst_gl_context_activate(*wrap_glcontext, FALSE);
       gst_clear_object (wrap_glcontext);
       return FALSE;
     }
index ae21904..11daec3 100644 (file)
@@ -246,6 +246,7 @@ gst_qml6_get_gl_wrapcontext (GstGLDisplay * display,
     gst_gl_context_activate(*wrap_glcontext, TRUE);
     if (!gst_gl_context_fill_info (*wrap_glcontext, &error)) {
       GST_ERROR ("failed to retrieve qt context info: %s", error->message);
+      gst_gl_context_activate(*wrap_glcontext, FALSE);
       gst_clear_object (wrap_glcontext);
       return FALSE;
     }