[X2Go-Commits] [nx-libs] 18/52: CVE-2014-0209: integer overflow of realloc() size in lexAlias() from xorg/lib/libXfont commit 05c8020a49416dd8b7510cbba45ce4f3fc81a7dc

git-admin at x2go.org git-admin at x2go.org
Sat Feb 14 17:47:08 CET 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x
in repository nx-libs.

commit 36f1dae749acb065eaefca56d42d19ef6822a001
Author: Mike DePaulo <mikedep333 at gmail.com>
Date:   Sun Feb 8 20:53:14 2015 -0500

    CVE-2014-0209: integer overflow of realloc() size in lexAlias() from xorg/lib/libXfont commit 05c8020a49416dd8b7510cbba45ce4f3fc81a7dc
    
    lexAlias() reads from a file in a loop. It does this by starting with a
    64 byte buffer.  If that size limit is hit, it does a realloc of the
    buffer size << 1, basically doubling the needed length every time the
    length limit is hit.
    
    Eventually, this will shift out to 0 (for a length of ~4gig), and that
    length will be passed on to realloc().  A length of 0 (with a valid
    pointer) causes realloc to free the buffer on most POSIX platforms,
    but the caller will still have a pointer to it, leading to use after
    free issues.
---
 nx-X11/lib/font/fontfile/dirfile.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/nx-X11/lib/font/fontfile/dirfile.c b/nx-X11/lib/font/fontfile/dirfile.c
index f390391..3a2fead 100644
--- a/nx-X11/lib/font/fontfile/dirfile.c
+++ b/nx-X11/lib/font/fontfile/dirfile.c
@@ -45,6 +45,7 @@ in this Software without prior written authorization from The Open Group.
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
+#include <limits.h>
 
 static Bool AddFileNameAliases ( FontDirectoryPtr dir );
 static int ReadFontAlias ( char *directory, Bool isFile,
@@ -373,6 +374,9 @@ lexAlias(FILE *file, char **lexToken)
 	    int         nsize;
 	    char       *nbuf;
 
+	    if (tokenSize >= (INT_MAX >> 2))
+		/* Stop before we overflow */
+		return EALLOC;
 	    nsize = tokenSize ? (tokenSize << 1) : 64;
 	    nbuf = (char *) xrealloc(tokenBuf, nsize);
 	    if (!nbuf)

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list