From 5e76850cff45deaacc34df352c68af990f3b7fb9 Mon Sep 17 00:00:00 2001 From: Michael Skorokhodov Date: Fri, 6 May 2022 12:28:21 +0300 Subject: [PATCH] egl: Return EGL_BAD_MATCH for invalid share_list From the eglspec.1.5: "An EGL_BAD_MATCH is generated if [...] share context was created on a different display than the one referenced by config." Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6414 Signed-off-by: Mykhailo Skorokhodov Reviewed-by: Adam Jackson Part-of: --- src/egl/main/eglapi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 1a6719172e659..97cb4ec448244 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -857,6 +857,17 @@ eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_list, if (!share && share_list != EGL_NO_CONTEXT) RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_NO_CONTEXT); + else if(share && share->Resource.Display != disp) { + /* From the spec. + * + * "An EGL_BAD_MATCH error is generated if an OpenGL or OpenGL ES + * context is requested and any of: [...] + * + * * share context was created on a different display + * than the one reference by config." + */ + RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_CONTEXT); + } context = disp->Driver->CreateContext(disp, conf, share, attrib_list); ret = (context) ? _eglLinkContext(context) : EGL_NO_CONTEXT;