From: Emil Velikov Date: Tue, 8 Aug 2017 14:55:36 +0000 (+0100) Subject: egl: avoid eglCreatePlatform*Surface{EXT,} crash with invalid dpy X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=26fbb9eacddb1b809739cb12477bde13501d6d5a;p=mesa.git egl: avoid eglCreatePlatform*Surface{EXT,} crash with invalid dpy If we have an invalid display fed into the functions, the display lookup will return NULL. Thus as we attempt to get the platform type, we'll deref. it leading to a crash. Keep in mind that this will not happen if Mesa is built without X11 or when the legacy eglCreate*Surface codepaths are used. A similar check was added with earlier commit 5e97b8f5ce9 ("egl: Fix crashes in eglCreate*Surface), although it was only applicable when the surfaceless platform is built. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Emil Velikov Reviewed-by: Eric Engestrom Reviewed-by: Tapani Pälli --- diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index b3bcb1bac7d..c935c4db79b 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -923,7 +923,7 @@ static void * _fixupNativeWindow(_EGLDisplay *disp, void *native_window) { #ifdef HAVE_X11_PLATFORM - if (disp->Platform == _EGL_PLATFORM_X11 && native_window != NULL) { + if (disp && disp->Platform == _EGL_PLATFORM_X11 && native_window != NULL) { /* The `native_window` parameter for the X11 platform differs between * eglCreateWindowSurface() and eglCreatePlatformPixmapSurfaceEXT(). In * eglCreateWindowSurface(), the type of `native_window` is an Xlib @@ -985,7 +985,7 @@ _fixupNativePixmap(_EGLDisplay *disp, void *native_pixmap) * `Pixmap*`. Convert `Pixmap*` to `Pixmap` because that's what * dri2_x11_create_pixmap_surface() expects. */ - if (disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL) + if (disp && disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL) return (void *)(* (Pixmap*) native_pixmap); #endif return native_pixmap;