[Mesa-dev] [PATCH] egl: move Null check to eglGetSyncAttribKHR to prevent Segfault
Marek Olšák
maraeo at gmail.com
Thu Feb 11 16:52:42 UTC 2016
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Wed, Feb 3, 2016 at 12:06 AM, Dongwon Kim <dongwon.kim at intel.com> wrote:
> Null-check on "*value" is currently done in
> _eglGetSyncAttrib, which is after eglGetSyncAttribKHR
> attempts to copy data at 'value' to 'attrib'. Segfault
> is enevitable if value==NULL in this case. Therefore,
> null-check should be moved to beginning of
> eglGetSyncAttribKHR to avoid any possible segfaults.
>
> Signed-off-by: Dongwon Kim <dongwon.kim at intel.com>
> ---
> src/egl/main/eglapi.c | 10 ++++++++--
> src/egl/main/eglsync.c | 3 ---
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
> index 323634e..32f6823 100644
> --- a/src/egl/main/eglapi.c
> +++ b/src/egl/main/eglapi.c
> @@ -1555,8 +1555,14 @@ eglGetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *valu
> static EGLBoolean EGLAPIENTRY
> eglGetSyncAttribKHR(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLint *value)
> {
> - EGLAttrib attrib = *value;
> - EGLBoolean result = eglGetSyncAttrib(dpy, sync, attribute, &attrib);
> + EGLAttrib attrib;
> + EGLBoolean result;
> +
> + if (!value)
> + RETURN_EGL_ERROR(NULL, EGL_BAD_PARAMETER, EGL_FALSE);
> +
> + attrib = *value;
> + result = eglGetSyncAttrib(dpy, sync, attribute, &attrib);
>
> /* The EGL_KHR_fence_sync spec says this about eglGetSyncAttribKHR:
> *
> diff --git a/src/egl/main/eglsync.c b/src/egl/main/eglsync.c
> index 3019e6e..999cb48 100644
> --- a/src/egl/main/eglsync.c
> +++ b/src/egl/main/eglsync.c
> @@ -144,9 +144,6 @@ EGLBoolean
> _eglGetSyncAttrib(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
> EGLint attribute, EGLAttrib *value)
> {
> - if (!value)
> - return _eglError(EGL_BAD_PARAMETER, "eglGetSyncAttribKHR");
> -
> switch (attribute) {
> case EGL_SYNC_TYPE_KHR:
> *value = sync->Type;
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list