[PATCH libX11] Fix wrong Xfree in XListFonts failure path
Peter Hutterer
peter.hutterer at who-t.net
Sun Jan 8 23:29:27 UTC 2017
On Sat, Jan 07, 2017 at 09:55:34AM -0800, Alan Coopersmith wrote:
> Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>
>
> Looks like this bug was introduced just after the 1.6.4 release and hasn't
> made it out into a libX11 release yet - thanks for catching it in time.
>
> -alan-
663f470..c74b070 master -> master
thanks
Cheers,
Peter
>
> On 01/ 7/17 07:20 AM, Julien Cristau wrote:
> > 'ch' gets moved inside the allocated buffer as we're looping through
> > fonts, so keep a reference to the start of the buffer so we can pass
> > that to Xfree in the failure case.
> >
> > Fixes: commit 20a3f99eba5001925b8b313da3accb7900eb1927 "Plug a memory leak"
> >
> > Signed-off-by: Julien Cristau <jcristau at debian.org>
> > ---
> > src/FontNames.c | 6 ++++--
> > 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/FontNames.c b/src/FontNames.c
> > index 3e23b5f4..9ffdfd29 100644
> > --- a/src/FontNames.c
> > +++ b/src/FontNames.c
> > @@ -43,6 +43,7 @@ int *actualCount) /* RETURN */
> > register int length;
> > char **flist = NULL;
> > char *ch = NULL;
> > + char *chstart;
> > char *chend;
> > int count = 0;
> > xListFontsReply rep;
> > @@ -86,6 +87,7 @@ int *actualCount) /* RETURN */
> > /*
> > * unpack into null terminated strings.
> > */
> > + chstart = ch;
> > chend = ch + (rlen + 1);
> > length = *(unsigned char *)ch;
> > *ch = 1; /* make sure it is non-zero for XFreeFontNames */
> > @@ -98,14 +100,14 @@ int *actualCount) /* RETURN */
> > *ch = '\0'; /* and replace with null-termination */
> > count++;
> > } else {
> > - Xfree(ch);
> > + Xfree(chstart);
> > Xfree(flist);
> > flist = NULL;
> > count = 0;
> > break;
> > }
> > } else {
> > - Xfree(ch);
> > + Xfree(chstart);
> > Xfree(flist);
> > flist = NULL;
> > count = 0;
> >
>
>
> --
> -Alan Coopersmith- alan.coopersmith at oracle.com
> Oracle Solaris Engineering - http://blogs.oracle.com/alanc
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list