On Sat, Apr 29, 2017 at 1:01 AM, Emil Velikov <emil.l.veli...@gmail.com> wrote:
> From: Emil Velikov <emil.veli...@collabora.com>
>
> Annotate the array as static const and use C99 initialiser to populate
> it.
>
> Signed-off-by: Emil Velikov <emil.veli...@collabora.com>
> ---
>  src/egl/drivers/dri2/egl_dri2.c | 68 
> +++++++++++------------------------------
>  1 file changed, 18 insertions(+), 50 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index 2cab7d00c1f..91456b025d5 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -102,56 +102,24 @@ const __DRIuseInvalidateExtension use_invalidate = {
>     .base = { __DRI_USE_INVALIDATE, 1 }
>  };
>
> -EGLint dri2_to_egl_attribute_map[] = {
> -   0,
> -   EGL_BUFFER_SIZE,                /* __DRI_ATTRIB_BUFFER_SIZE */
> -   EGL_LEVEL,                        /* __DRI_ATTRIB_LEVEL */
> -   EGL_RED_SIZE,                /* __DRI_ATTRIB_RED_SIZE */
> -   EGL_GREEN_SIZE,                /* __DRI_ATTRIB_GREEN_SIZE */
> -   EGL_BLUE_SIZE,                /* __DRI_ATTRIB_BLUE_SIZE */
> -   EGL_LUMINANCE_SIZE,                /* __DRI_ATTRIB_LUMINANCE_SIZE */
> -   EGL_ALPHA_SIZE,                /* __DRI_ATTRIB_ALPHA_SIZE */
> -   0,                                /* __DRI_ATTRIB_ALPHA_MASK_SIZE */
> -   EGL_DEPTH_SIZE,                /* __DRI_ATTRIB_DEPTH_SIZE */
> -   EGL_STENCIL_SIZE,                /* __DRI_ATTRIB_STENCIL_SIZE */
> -   0,                                /* __DRI_ATTRIB_ACCUM_RED_SIZE */
> -   0,                                /* __DRI_ATTRIB_ACCUM_GREEN_SIZE */
> -   0,                                /* __DRI_ATTRIB_ACCUM_BLUE_SIZE */
> -   0,                                /* __DRI_ATTRIB_ACCUM_ALPHA_SIZE */
> -   EGL_SAMPLE_BUFFERS,                /* __DRI_ATTRIB_SAMPLE_BUFFERS */
> -   EGL_SAMPLES,                        /* __DRI_ATTRIB_SAMPLES */
> -   0,                                /* __DRI_ATTRIB_RENDER_TYPE, */
> -   0,                                /* __DRI_ATTRIB_CONFIG_CAVEAT */
> -   0,                                /* __DRI_ATTRIB_CONFORMANT */
> -   0,                                /* __DRI_ATTRIB_DOUBLE_BUFFER */
> -   0,                                /* __DRI_ATTRIB_STEREO */
> -   0,                                /* __DRI_ATTRIB_AUX_BUFFERS */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_TYPE */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_INDEX_VALUE 
> */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_RED_VALUE */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_GREEN_VALUE 
> */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_BLUE_VALUE 
> */
> -   0,                                /* __DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE 
> */
> -   0,                                /* __DRI_ATTRIB_FLOAT_MODE (deprecated) 
> */
> -   0,                                /* __DRI_ATTRIB_RED_MASK */
> -   0,                                /* __DRI_ATTRIB_GREEN_MASK */
> -   0,                                /* __DRI_ATTRIB_BLUE_MASK */
> -   0,                                /* __DRI_ATTRIB_ALPHA_MASK */
> -   EGL_MAX_PBUFFER_WIDTH,        /* __DRI_ATTRIB_MAX_PBUFFER_WIDTH */
> -   EGL_MAX_PBUFFER_HEIGHT,        /* __DRI_ATTRIB_MAX_PBUFFER_HEIGHT */
> -   EGL_MAX_PBUFFER_PIXELS,        /* __DRI_ATTRIB_MAX_PBUFFER_PIXELS */
> -   0,                                /* __DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH */
> -   0,                                /* __DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT 
> */
> -   0,                                /* __DRI_ATTRIB_VISUAL_SELECT_GROUP */
> -   0,                                /* __DRI_ATTRIB_SWAP_METHOD */
> -   EGL_MAX_SWAP_INTERVAL,        /* __DRI_ATTRIB_MAX_SWAP_INTERVAL */
> -   EGL_MIN_SWAP_INTERVAL,        /* __DRI_ATTRIB_MIN_SWAP_INTERVAL */
> -   0,                                /* __DRI_ATTRIB_BIND_TO_TEXTURE_RGB */
> -   0,                                /* __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA */
> -   0,                                /* __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE 
> */
> -   0,                                /* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS 
> */
> -   EGL_Y_INVERTED_NOK,                /* __DRI_ATTRIB_YINVERTED */
> -   0,                                /* 
> __DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE */
> +static const EGLint dri2_to_egl_attribute_map[] = {

Don't we need to specify the size explicitly now (or alternatively
specify the value of last attribute explicitly, even if it's 0)?
Looking at the code that reads from the array, it uses the key
directly as the index, so for example reading
__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE will now trigger an out of
bounds read.

Best regards,
Tomasz

> +   [__DRI_ATTRIB_BUFFER_SIZE ]          = EGL_BUFFER_SIZE,
> +   [__DRI_ATTRIB_LEVEL]                 = EGL_LEVEL,
> +   [__DRI_ATTRIB_RED_SIZE]              = EGL_RED_SIZE,
> +   [__DRI_ATTRIB_GREEN_SIZE]            = EGL_GREEN_SIZE,
> +   [__DRI_ATTRIB_BLUE_SIZE]             = EGL_BLUE_SIZE,
> +   [__DRI_ATTRIB_LUMINANCE_SIZE]        = EGL_LUMINANCE_SIZE,
> +   [__DRI_ATTRIB_ALPHA_SIZE]            = EGL_ALPHA_SIZE,
> +   [__DRI_ATTRIB_DEPTH_SIZE]            = EGL_DEPTH_SIZE,
> +   [__DRI_ATTRIB_STENCIL_SIZE]          = EGL_STENCIL_SIZE,
> +   [__DRI_ATTRIB_SAMPLE_BUFFERS]        = EGL_SAMPLE_BUFFERS,
> +   [__DRI_ATTRIB_SAMPLES]               = EGL_SAMPLES,
> +   [__DRI_ATTRIB_MAX_PBUFFER_WIDTH]     = EGL_MAX_PBUFFER_WIDTH,
> +   [__DRI_ATTRIB_MAX_PBUFFER_HEIGHT]    = EGL_MAX_PBUFFER_HEIGHT,
> +   [__DRI_ATTRIB_MAX_PBUFFER_PIXELS]    = EGL_MAX_PBUFFER_PIXELS,
> +   [__DRI_ATTRIB_MAX_SWAP_INTERVAL]     = EGL_MAX_SWAP_INTERVAL,
> +   [__DRI_ATTRIB_MIN_SWAP_INTERVAL]     = EGL_MIN_SWAP_INTERVAL,
> +   [__DRI_ATTRIB_YINVERTED]             = EGL_Y_INVERTED_NOK,
>  };
>
>  const __DRIconfig *
> --
> 2.12.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to