[PATCH 01/32] [libx11] Using freed pointer "e"

Mark Kettenis mark.kettenis at xs4all.nl
Sat Feb 12 15:00:10 PST 2011


> From: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= <erkki.seppala at vincit.fi>
> Date: Thu, 27 Jan 2011 09:53:44 +0200
> 
> Reordered code to first to do the comparison and then to release data

Your static analysis tool isn't all that good.  Using the value of a
pointer after freeing the storage it points to is totally fine.

> ---
>  src/XlibInt.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/XlibInt.c b/src/XlibInt.c
> index d55c26a..c385f4c 100644
> --- a/src/XlibInt.c
> +++ b/src/XlibInt.c
> @@ -777,10 +777,10 @@ _XFreeEventCookies(Display *dpy)
>      head = (struct stored_event**)&dpy->cookiejar;
>  
>      DL_FOREACH_SAFE(*head, e, tmp) {
> -        XFree(e->ev.data);
> -        XFree(e);
>          if (dpy->cookiejar == e)
>              dpy->cookiejar = NULL;
> +        XFree(e->ev.data);
> +        XFree(e);
>      }
>  }


More information about the xorg-devel mailing list