[PATCH 1/2] xfree86: fix a memory leak in edidMakeAtom().

Julien Cristau jcristau at debian.org
Sun Jul 28 09:05:34 PDT 2013


On Thu, Jul 11, 2013 at 18:27:14 -0400, Alex Deucher wrote:

> On Thu, Jul 11, 2013 at 6:02 PM, Julien Cristau <jcristau at debian.org> wrote:
> > On Mon, Jun 17, 2013 at 12:39:20 -0400, alexdeucher at gmail.com wrote:
> >
> >> From: Leo Liu <leo.liu at amd.com>
> >>
> >> leak happens when looping xrandr prop.
> >>
> >> Signed-off-by: Leo Liu <leo.liu at amd.com>
> >> ---
> >>  hw/xfree86/common/xf86Helper.c |    1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
> >> index 721159d..bb17ecc 100644
> >> --- a/hw/xfree86/common/xf86Helper.c
> >> +++ b/hw/xfree86/common/xf86Helper.c
> >> @@ -1813,6 +1813,7 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
> >>      }
> >>      else {
> >>          free(pNewProp->name);
> >> +        free(pNewProp->data);
> >>          existing = TRUE;
> >>      }
> >>
> > AFAICT xf86RegisterRootWindowProperty can be called with non-malloc
> > 'value' (e.g. for the SeatId stuff in InitOutput, although that's only
> > for serverGeneration == 1).  Is there any way to make this a little more
> > obviously correct?
> 
> How about:
> 
>       else {
>           free(pNewProp->name);
> +        if(pNewProp->data)
> +            free(pNewProp->data);
>           existing = TRUE;
> 
That doesn't really change anything.  I was thinking more of making sure
that function is always called with malloced data.

Cheers,
Julien


More information about the xorg-devel mailing list