From 2af08bf7b69a5f3b8f94b8669f1bff67405ca396 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sun, 9 May 2021 18:10:32 +0200 Subject: [PATCH] egl/x11: don't forget to exit the attrib list loop Without this check, if we receive any attribs from the client, we either find an X11/XCB screen fd in there, or we keep going until we end up in random bits of memory and crash. Fixes: 4aebd86f9a1b0db0ebcc ("egl/x11: pick the user requested screen") Signed-off-by: Eric Engestrom Reviewed-by: Adam Jackson Part-of: --- src/egl/drivers/dri2/platform_x11.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 9ffd67ab58c..5ffdf132184 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1211,7 +1211,10 @@ dri2_find_screen_for_display(const _EGLDisplay *disp, int fallback_screen) { const EGLAttrib *attr; - for (attr = disp->Options.Attribs; attr; attr += 2) { + if (!disp->Options.Attribs) + return fallback_screen; + + for (attr = disp->Options.Attribs; attr[0] != EGL_NONE; attr += 2) { if (attr[0] == EGL_PLATFORM_X11_SCREEN_EXT || attr[0] == EGL_PLATFORM_XCB_SCREEN_EXT) return attr[1];