https://bugs.freedesktop.org/show_bug.cgi?id=89920
Bug ID: 89920 Summary: eglCreatePlatformWindowSurfaceEXT() should not dereference native_window Product: Mesa Version: 10.5 Hardware: All OS: All Status: NEW Severity: normal Priority: medium Component: EGL Assignee: mesa-dev@lists.freedesktop.org Reporter: junkmailnotr...@yahoo.com QA Contact: mesa-dev@lists.freedesktop.org The following code block appears in eglCreatePlatformWindowSurfaceEXT() in src/egl/main/eglapi.c: #ifdef HAVE_X11_PLATFORM if (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 * `Window`. In eglCreatePlatformWindowSurfaceEXT(), the type is * `Window*`. Convert `Window*` to `Window` because that's what * dri2_x11_create_window_surface() expects. */ native_window = (void*) (* (Window*) native_window); } #endif The assertion that the `native_window` parameter for the X11 platform differs between eglCreateWindowSurface() and eglCreatePlatformWindowSurfaceEXT() is not supported by the EXT_platform_base extension or EGL Version 1.5. These merely state: "The behavior of eglCreateWindowSurface is identical to that of eglCreatePlatformWindowSurfaceEXT except that the set of platforms to which <dpy> is permitted to belong, as well as the actual type of <win>, are implementation specific." Nowhere does it say that - uniquely for the X11 platform - the `native_window` parameter should be passed by reference rather than by value. My feeling is that eglCreatePlatformWindowSurfaceEXT() should follow the behaviour of eglCreateWindowSurface() in treating the `native_window` parameter as an opaque handle (i.e. EGLNativeWindowType) for all platforms. A similar situation exists for eglCreatePlatformPixmapSurfaceEXT(): #ifdef HAVE_X11_PLATFORM /* The `native_pixmap` parameter for the X11 platform differs between * eglCreatePixmapSurface() and eglCreatePlatformPixmapSurfaceEXT(). In * eglCreatePixmapSurface(), the type of `native_pixmap` is an Xlib * `Pixmap`. In eglCreatePlatformPixmapSurfaceEXT(), the type is * `Pixmap*`. Convert `Pixmap*` to `Pixmap` because that's what * dri2_x11_create_pixmap_surface() expects. */ if (disp->Platform == _EGL_PLATFORM_X11 && native_pixmap != NULL) { native_pixmap = (void*) (* (Pixmap*) native_pixmap); } #endif -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev