[Mesa-dev] [PATCH Mesa] egl/wayland: check drmGetMagic for failure

Emil Velikov emil.l.velikov at gmail.com
Wed Aug 24 11:05:14 UTC 2016


On 10 July 2016 at 23:26, Eric Engestrom <eric at engestrom.ch> wrote:
> Coverity (CovID 1255672) noticed that all the other calls to drmGetMagic were
> checked for failure, but not this one. Fix this, and return before an invalid
> magic token is used to authenticate the device.
>
> Signed-off-by: Eric Engestrom <eric at engestrom.ch>
> ---
>  src/egl/drivers/dri2/platform_wayland.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
> index e714e44..9de75f2 100644
> --- a/src/egl/drivers/dri2/platform_wayland.c
> +++ b/src/egl/drivers/dri2/platform_wayland.c
> @@ -918,7 +918,10 @@ drm_handle_device(void *data, struct wl_drm *drm, const char *device)
>     if (drmGetNodeTypeFromFd(dri2_dpy->fd) == DRM_NODE_RENDER) {
>        dri2_dpy->authenticated = 1;
>     } else {
> -      drmGetMagic(dri2_dpy->fd, &magic);
> +      if (drmGetMagic(dri2_dpy->fd, &magic)) {
> +         _eglLog(_EGL_WARNING, "wayland-egl: failed to get drm magic");
> +         return;
Missing close(fd) and free(device_name) ?
Then again... the whole error handing in the area seems fishy. Locally
we may open and/or allocate yet in dri2_initialize_wayland_drm() we
close/free unconditionally.

Mildly related:
- Is having the consecutive roundtrip()s needed/wise ?
- Are we doing a double auth... once in dri2_initialize_wayland_drm
(via drm_handle_device()) and second time in
dri2_bind_wayland_display_wl (via dri2_wl_authenticate).
Afaict it is not possible to have BindWaylandDisplayWL before
Initialize... and/or use BindWaylandDisplayWL without selecting (via
GetPlatformDisplay* or GetDisplay) a wayland dpy ?

Thanks
Emil


More information about the mesa-dev mailing list