[149109] trunk/dports/x11/xorg-libXfont

jeremyhu at macports.org jeremyhu at macports.org
Mon May 30 21:32:15 PDT 2016


Revision: 149109
          https://trac.macports.org/changeset/149109
Author:   jeremyhu at macports.org
Date:     2016-05-30 21:32:15 -0700 (Mon, 30 May 2016)
Log Message:
-----------
xorg-libXfont: Fix a buffer overrun and some static analysis warnings

Modified Paths:
--------------
    trunk/dports/x11/xorg-libXfont/Portfile

Added Paths:
-----------
    trunk/dports/x11/xorg-libXfont/files/0001-doc-add-a-couple-olinks-to-fsproto-xfs-design-docs.patch
    trunk/dports/x11/xorg-libXfont/files/0002-bdfReadCharacters-Allow-negative-DWIDTH-values.patch
    trunk/dports/x11/xorg-libXfont/files/0003-Fix-is-usage.patch
    trunk/dports/x11/xorg-libXfont/files/0004-stubs-Add-missing-externs-for-declarations-in-the-NO.patch
    trunk/dports/x11/xorg-libXfont/files/0005-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch
    trunk/dports/x11/xorg-libXfont/files/0006-Fix-warnings.patch
    trunk/dports/x11/xorg-libXfont/files/0007-FreeType-Correct-an-allocation-size.patch
    trunk/dports/x11/xorg-libXfont/files/0008-bitmap-Bail-out-on-invalid-input-to-FontFileMakeDir-.patch
    trunk/dports/x11/xorg-libXfont/files/0009-fserve-Silence-a-Wformat-warning.patch
    trunk/dports/x11/xorg-libXfont/files/0010-fserve-Fix-a-buffer-read-overrun-in-_fs_client_acces.patch

Removed Paths:
-------------
    trunk/dports/x11/xorg-libXfont/files/0001-stubs-Add-missing-externs-for-declarations-in-the-NO.patch
    trunk/dports/x11/xorg-libXfont/files/0002-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch

Modified: trunk/dports/x11/xorg-libXfont/Portfile
===================================================================
--- trunk/dports/x11/xorg-libXfont/Portfile	2016-05-31 00:14:51 UTC (rev 149108)
+++ trunk/dports/x11/xorg-libXfont/Portfile	2016-05-31 04:32:15 UTC (rev 149109)
@@ -4,7 +4,7 @@
 
 name		xorg-libXfont
 version		1.5.1
-revision	1
+revision	2
 categories	x11 devel
 license		X11 BSD
 maintainers	jeremyhu openmaintainer
@@ -36,8 +36,16 @@
 	port:xorg-fontsproto
 
 patchfiles \
-	0001-stubs-Add-missing-externs-for-declarations-in-the-NO.patch \
-	0002-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch
+	0001-doc-add-a-couple-olinks-to-fsproto-xfs-design-docs.patch \
+	0002-bdfReadCharacters-Allow-negative-DWIDTH-values.patch \
+	0003-Fix-is-usage.patch \
+	0004-stubs-Add-missing-externs-for-declarations-in-the-NO.patch \
+	0005-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch \
+	0006-Fix-warnings.patch \
+	0007-FreeType-Correct-an-allocation-size.patch \
+	0008-bitmap-Bail-out-on-invalid-input-to-FontFileMakeDir-.patch \
+	0009-fserve-Silence-a-Wformat-warning.patch \
+	0010-fserve-Fix-a-buffer-read-overrun-in-_fs_client_acces.patch
 
 patch.pre_args -p1
 

Added: trunk/dports/x11/xorg-libXfont/files/0001-doc-add-a-couple-olinks-to-fsproto-xfs-design-docs.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0001-doc-add-a-couple-olinks-to-fsproto-xfs-design-docs.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0001-doc-add-a-couple-olinks-to-fsproto-xfs-design-docs.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,40 @@
+From 159bfa4ec094e7d342c9b59c31bfea7dccbac58a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith at oracle.com>
+Date: Sat, 7 Feb 2015 17:24:48 -0800
+Subject: [PATCH 01/10] doc: add a couple olinks to fsproto & xfs-design docs
+
+Don't seem to have ability to link to BDF or Xserver internals docs yet
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
+---
+ doc/fontlib.xml | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/doc/fontlib.xml b/doc/fontlib.xml
+index c5079c8..ce31bb5 100644
+--- a/doc/fontlib.xml
++++ b/doc/fontlib.xml
+@@ -111,8 +111,9 @@
+       </listitem>
+       <listitem>
+ 	<para>
++	  <olink targetdoc='xfs-design' targetptr='xfs-design'>
+ 	  <citetitle pubwork="article">Font Server Implementation
+-	    Overview</citetitle> which discusses the design of the font
++	    Overview</citetitle></olink> which discusses the design of the font
+ 	  server.
+ 	</para>
+       </listitem>
+@@ -126,7 +127,9 @@
+       </listitem>
+       <listitem>
+ 	<para>
++	  <olink targetdoc='fsproto' targetptr='fsproto'>
+ 	  <citetitle pubwork="article">The X Font Service Protocol</citetitle>
++	  </olink>
+ 	  for a description of the constraints placed  on the design by
+ 	  including support for this font service mechanism.
+ 	</para>
+-- 
+2.8.3
+

Deleted: trunk/dports/x11/xorg-libXfont/files/0001-stubs-Add-missing-externs-for-declarations-in-the-NO.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0001-stubs-Add-missing-externs-for-declarations-in-the-NO.patch	2016-05-31 00:14:51 UTC (rev 149108)
+++ trunk/dports/x11/xorg-libXfont/files/0001-stubs-Add-missing-externs-for-declarations-in-the-NO.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -1,71 +0,0 @@
-From 2788c6984bc54bfba61b2dbdb5353978199d8a37 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Wed, 21 Oct 2015 21:27:26 -0700
-Subject: [PATCH 1/2] stubs: Add missing externs for declarations in the
- NO_WEAK_SYMBOLS && PIC stubs resolution
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
----
- src/stubs/stubs.h | 46 +++++++++++++++++++++++-----------------------
- 1 file changed, 23 insertions(+), 23 deletions(-)
-
-diff --git a/src/stubs/stubs.h b/src/stubs/stubs.h
-index 7d499d5..c09c675 100644
---- a/src/stubs/stubs.h
-+++ b/src/stubs/stubs.h
-@@ -38,29 +38,29 @@ extern int _font_init_stubs(void);
-       (*__##sym)(f, _args); \
-     va_end(_args)
- 
--int (*__client_auth_generation)(ClientPtr);
--Bool (*__ClientSignal)(ClientPtr);
--void (*__DeleteFontClientID)(Font);
--void (*__VErrorF)(const char *, va_list);
--FontPtr (*__find_old_font)(FSID);
--FontResolutionPtr (*__GetClientResolutions)(int *);
--int (*__GetDefaultPointSize)(void);
--Font (*__GetNewFontClientID)(void);
--unsigned long (*__GetTimeInMillis)(void);
--int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
--int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
--     ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
--     StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
--     LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
--void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
--void **__ptr_serverClient;
--int (*__set_font_authorizations)(char **, int *, ClientPtr);
--int (*__StoreFontClientFont)(FontPtr, Font);
--Atom (*__MakeAtom)(const char *, unsigned, int);
--int (*__ValidAtom)(Atom);
--char *(*__NameForAtom)(Atom);
--unsigned long *__ptr_serverGeneration;
--void (*__register_fpe_functions)(void);
-+extern int (*__client_auth_generation)(ClientPtr);
-+extern Bool (*__ClientSignal)(ClientPtr);
-+extern void (*__DeleteFontClientID)(Font);
-+extern void (*__VErrorF)(const char *, va_list);
-+extern FontPtr (*__find_old_font)(FSID);
-+extern FontResolutionPtr (*__GetClientResolutions)(int *);
-+extern int (*__GetDefaultPointSize)(void);
-+extern Font (*__GetNewFontClientID)(void);
-+extern unsigned long (*__GetTimeInMillis)(void);
-+extern int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
-+extern int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
-+            ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
-+            StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
-+            LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
-+extern void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
-+extern void **__ptr_serverClient;
-+extern int (*__set_font_authorizations)(char **, int *, ClientPtr);
-+extern int (*__StoreFontClientFont)(FontPtr, Font);
-+extern Atom (*__MakeAtom)(const char *, unsigned, int);
-+extern int (*__ValidAtom)(Atom);
-+extern char *(*__NameForAtom)(Atom);
-+extern unsigned long *__ptr_serverGeneration;
-+extern void (*__register_fpe_functions)(void);
- #else /* NO_WEAK_SYMBOLS && PIC */
- #define OVERRIDE_DATA(sym)
- #define OVERRIDE_SYMBOL(sym,...)
--- 
-2.6.2
-

Deleted: trunk/dports/x11/xorg-libXfont/files/0002-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0002-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch	2016-05-31 00:14:51 UTC (rev 149108)
+++ trunk/dports/x11/xorg-libXfont/files/0002-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -1,59 +0,0 @@
-From d6877a7c1c35985f6a75b6cd4e814595e781adc4 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Wed, 21 Oct 2015 21:03:00 -0700
-Subject: [PATCH 2/2] Use NO_WEAK_SYMBOLS instead of -flat_namespace
-
-Lesser of two evil hacks, I suppose...
-
-This reverts commit 0386fa77367a305deea3cc27f8a3865cc3c467c0.
----
- configure.ac      |  3 ---
- src/stubs/stubs.h | 11 +----------
- 2 files changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7cb6bdf..640cc92 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -213,9 +213,6 @@ case $host_os in
-     linux*)
-         OS_CFLAGS="-D_XOPEN_SOURCE"
-         ;;
--    darwin*)
--        OS_CFLAGS="-Wl,-flat_namespace"
--	;;
-     *)
-         OS_CFLAGS=
-         ;;
-diff --git a/src/stubs/stubs.h b/src/stubs/stubs.h
-index c09c675..9e71806 100644
---- a/src/stubs/stubs.h
-+++ b/src/stubs/stubs.h
-@@ -10,7 +10,7 @@
- #endif
- 
- /* this probably works for Mach-O too, but probably not for PE */
--#if (defined(__APPLE__) || defined(__ELF__)) && defined(__GNUC__) && (__GNUC__ >= 3)
-+#if defined(__ELF__) && defined(__GNUC__) && (__GNUC__ >= 3)
- #define weak __attribute__((weak))
- #else
- #define weak
-@@ -67,15 +67,6 @@ extern void (*__register_fpe_functions)(void);
- #define OVERRIDE_VA_SYMBOL(sym,f)
- #endif
- 
--/* This is really just a hack for now... __APPLE__ really should be using
-- * the weak symbols route above, but it's causing an as-yet unresolved issue,
-- * so we're instead building with flat_namespace.
-- */
--#ifdef __APPLE__
--#undef weak
--#define weak
--#endif
--
- extern FontPtr find_old_font ( FSID id );
- extern int set_font_authorizations ( char **authorizations,
- 				     int *authlen,
--- 
-2.6.2
-

Added: trunk/dports/x11/xorg-libXfont/files/0002-bdfReadCharacters-Allow-negative-DWIDTH-values.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0002-bdfReadCharacters-Allow-negative-DWIDTH-values.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0002-bdfReadCharacters-Allow-negative-DWIDTH-values.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,39 @@
+From 1a73d6828dfa03924f2d68644fb5b99afd9c78e2 Mon Sep 17 00:00:00 2001
+From: Benjamin Tissoires <benjamin.tissoires at gmail.com>
+Date: Mon, 13 Jul 2015 14:43:06 -0400
+Subject: [PATCH 02/10] bdfReadCharacters: Allow negative DWIDTH values
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The fix for CVE-2015-1804 prevent DWIDTH to be negative.
+However, the spec states that "DWIDTH [...] is a vector indicating the
+position of the next glyph’s origin relative to the origin of this glyph."
+
+So negative values are correct.
+
+Found by trying to compile XTS.
+
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
+Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
+Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
+---
+ src/bitmap/bdfread.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bitmap/bdfread.c b/src/bitmap/bdfread.c
+index a0ace8f..eccd7b7 100644
+--- a/src/bitmap/bdfread.c
++++ b/src/bitmap/bdfread.c
+@@ -426,7 +426,7 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
+ 	    goto BAILOUT;
+ 	}
+ 	/* xCharInfo metrics are stored as INT16 */
+-	if ((wx < 0) || (wx > INT16_MAX)) {
++	if ((wx < INT16_MIN) || (wx > INT16_MAX)) {
+ 	    bdfError("character '%s' has out of range width, %d\n",
+ 		     charName, wx);
+ 	    goto BAILOUT;
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0003-Fix-is-usage.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0003-Fix-is-usage.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0003-Fix-is-usage.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,124 @@
+From d66f107d6e714a54515f39d94caf46aef9be7416 Mon Sep 17 00:00:00 2001
+From: Thomas Klausner <wiz at NetBSD.org>
+Date: Wed, 25 Feb 2015 21:45:50 +0100
+Subject: [PATCH 03/10] Fix is*() usage.
+
+The argument must be an unsigned char or -1; in these cases
+we know it's not -1 so cast it to unsigned char.
+Fixes
+warning: array subscript is of type 'char' [-Wchar-subscripts]
+
+Signed-off-by: Thomas Klausner <wiz at NetBSD.org>
+---
+ src/FreeType/ftfuncs.c |  6 +++---
+ src/FreeType/xttcap.c  |  2 +-
+ src/bitmap/bdfutils.c  |  4 ++--
+ src/util/fontxlfd.c    | 10 +++++-----
+ 4 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/src/FreeType/ftfuncs.c b/src/FreeType/ftfuncs.c
+index a4969d1..c440fde 100644
+--- a/src/FreeType/ftfuncs.c
++++ b/src/FreeType/ftfuncs.c
+@@ -2061,7 +2061,7 @@ restrict_code_range_by_str(int count,unsigned short *refFirstCol,
+         long val;
+ 
+         /* skip comma and/or space */
+-        while (',' == *p || isspace(*p))
++        while (',' == *p || isspace((unsigned char)*p))
+             p++;
+ 
+         /* begin point */
+@@ -2079,7 +2079,7 @@ restrict_code_range_by_str(int count,unsigned short *refFirstCol,
+         }
+ 
+         /* skip space */
+-        while (isspace(*p))
++        while (isspace((unsigned char)*p))
+             p++;
+ 
+         if (',' != *p && '\0' != *p) {
+@@ -2092,7 +2092,7 @@ restrict_code_range_by_str(int count,unsigned short *refFirstCol,
+                 break;
+ 
+             /* skip space */
+-            while (isspace(*p))
++            while (isspace((unsigned char)*p))
+                 p++;
+ 
+             val = strtol(p, (char **)&q, 0);
+diff --git a/src/FreeType/xttcap.c b/src/FreeType/xttcap.c
+index cee752e..e30e0f9 100644
+--- a/src/FreeType/xttcap.c
++++ b/src/FreeType/xttcap.c
+@@ -632,7 +632,7 @@ SPropRecValList_add_by_font_cap(SDynPropRecValList *pThisList,
+                 }
+                 break;
+             }
+-            if ( !isdigit(*p) )
++            if ( !isdigit((unsigned char)*p) )
+                 break;
+         }
+     }
+diff --git a/src/bitmap/bdfutils.c b/src/bitmap/bdfutils.c
+index 288148b..438d197 100644
+--- a/src/bitmap/bdfutils.c
++++ b/src/bitmap/bdfutils.c
+@@ -207,11 +207,11 @@ bdfIsInteger(char *str)
+     char        c;
+ 
+     c = *str++;
+-    if (!(isdigit(c) || c == '-' || c == '+'))
++    if (!(isdigit((unsigned char)c) || c == '-' || c == '+'))
+ 	return (FALSE);
+ 
+     while ((c = *str++))
+-	if (!isdigit(c))
++	if (!isdigit((unsigned char)c))
+ 	    return (FALSE);
+ 
+     return (TRUE);
+diff --git a/src/util/fontxlfd.c b/src/util/fontxlfd.c
+index 974128e..99a3679 100644
+--- a/src/util/fontxlfd.c
++++ b/src/util/fontxlfd.c
+@@ -145,9 +145,9 @@ xlfd_double_to_text(double value, char *buffer, int space_required)
+     if (value == 0.0) exponent = 0;
+ 
+     /* Figure out how many digits are significant */
+-    while (p1 >= buffer && (!isdigit(*p1) || *p1 == '0')) p1--;
++    while (p1 >= buffer && (!isdigit((unsigned char)*p1) || *p1 == '0')) p1--;
+     ndigits = 0;
+-    while (p1 >= buffer) if (isdigit(*p1--)) ndigits++;
++    while (p1 >= buffer) if (isdigit((unsigned char)*p1--)) ndigits++;
+ 
+     /* Figure out notation to use */
+     if (exponent >= XLFD_NDIGITS || ndigits - exponent > XLFD_NDIGITS + 1)
+@@ -278,7 +278,7 @@ GetMatrix(char *ptr, FontScalablePtr vals, int which)
+ 	matrix = vals->point_matrix;
+     else return (char *)0;
+ 
+-    while (isspace(*ptr)) ptr++;
++    while (isspace((unsigned char)*ptr)) ptr++;
+     if (*ptr == '[')
+     {
+ 	/* This is a matrix containing real numbers.  It would be nice
+@@ -292,13 +292,13 @@ GetMatrix(char *ptr, FontScalablePtr vals, int which)
+ 	    (ptr = readreal(ptr, matrix + 2)) &&
+ 	    (ptr = readreal(ptr, matrix + 3)))
+ 	{
+-	    while (isspace(*ptr)) ptr++;
++	    while (isspace((unsigned char)*ptr)) ptr++;
+ 	    if (*ptr != ']')
+ 		ptr = (char *)0;
+ 	    else
+ 	    {
+ 		ptr++;
+-		while (isspace(*ptr)) ptr++;
++		while (isspace((unsigned char)*ptr)) ptr++;
+ 		if (*ptr == '-')
+ 		{
+ 		    if (which == POINTSIZE_MASK)
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0004-stubs-Add-missing-externs-for-declarations-in-the-NO.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0004-stubs-Add-missing-externs-for-declarations-in-the-NO.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0004-stubs-Add-missing-externs-for-declarations-in-the-NO.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,71 @@
+From 2788c6984bc54bfba61b2dbdb5353978199d8a37 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Wed, 21 Oct 2015 21:27:26 -0700
+Subject: [PATCH 04/10] stubs: Add missing externs for declarations in the
+ NO_WEAK_SYMBOLS && PIC stubs resolution
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+---
+ src/stubs/stubs.h | 46 +++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/src/stubs/stubs.h b/src/stubs/stubs.h
+index 7d499d5..c09c675 100644
+--- a/src/stubs/stubs.h
++++ b/src/stubs/stubs.h
+@@ -38,29 +38,29 @@ extern int _font_init_stubs(void);
+       (*__##sym)(f, _args); \
+     va_end(_args)
+ 
+-int (*__client_auth_generation)(ClientPtr);
+-Bool (*__ClientSignal)(ClientPtr);
+-void (*__DeleteFontClientID)(Font);
+-void (*__VErrorF)(const char *, va_list);
+-FontPtr (*__find_old_font)(FSID);
+-FontResolutionPtr (*__GetClientResolutions)(int *);
+-int (*__GetDefaultPointSize)(void);
+-Font (*__GetNewFontClientID)(void);
+-unsigned long (*__GetTimeInMillis)(void);
+-int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
+-int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
+-     ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
+-     StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
+-     LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
+-void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
+-void **__ptr_serverClient;
+-int (*__set_font_authorizations)(char **, int *, ClientPtr);
+-int (*__StoreFontClientFont)(FontPtr, Font);
+-Atom (*__MakeAtom)(const char *, unsigned, int);
+-int (*__ValidAtom)(Atom);
+-char *(*__NameForAtom)(Atom);
+-unsigned long *__ptr_serverGeneration;
+-void (*__register_fpe_functions)(void);
++extern int (*__client_auth_generation)(ClientPtr);
++extern Bool (*__ClientSignal)(ClientPtr);
++extern void (*__DeleteFontClientID)(Font);
++extern void (*__VErrorF)(const char *, va_list);
++extern FontPtr (*__find_old_font)(FSID);
++extern FontResolutionPtr (*__GetClientResolutions)(int *);
++extern int (*__GetDefaultPointSize)(void);
++extern Font (*__GetNewFontClientID)(void);
++extern unsigned long (*__GetTimeInMillis)(void);
++extern int (*__init_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr);
++extern int (*__RegisterFPEFunctions)(NameCheckFunc, InitFpeFunc, FreeFpeFunc,
++            ResetFpeFunc, OpenFontFunc, CloseFontFunc, ListFontsFunc,
++            StartLfwiFunc, NextLfwiFunc, WakeupFpeFunc, ClientDiedFunc,
++            LoadGlyphsFunc, StartLaFunc, NextLaFunc, SetPathFunc);
++extern void (*__remove_fs_handlers)(FontPathElementPtr, BlockHandlerProcPtr, Bool);
++extern void **__ptr_serverClient;
++extern int (*__set_font_authorizations)(char **, int *, ClientPtr);
++extern int (*__StoreFontClientFont)(FontPtr, Font);
++extern Atom (*__MakeAtom)(const char *, unsigned, int);
++extern int (*__ValidAtom)(Atom);
++extern char *(*__NameForAtom)(Atom);
++extern unsigned long *__ptr_serverGeneration;
++extern void (*__register_fpe_functions)(void);
+ #else /* NO_WEAK_SYMBOLS && PIC */
+ #define OVERRIDE_DATA(sym)
+ #define OVERRIDE_SYMBOL(sym,...)
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0005-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0005-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0005-Use-NO_WEAK_SYMBOLS-instead-of-flat_namespace.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,59 @@
+From d6877a7c1c35985f6a75b6cd4e814595e781adc4 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Wed, 21 Oct 2015 21:03:00 -0700
+Subject: [PATCH 05/10] Use NO_WEAK_SYMBOLS instead of -flat_namespace
+
+Lesser of two evil hacks, I suppose...
+
+This reverts commit 0386fa77367a305deea3cc27f8a3865cc3c467c0.
+---
+ configure.ac      |  3 ---
+ src/stubs/stubs.h | 11 +----------
+ 2 files changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7cb6bdf..640cc92 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -213,9 +213,6 @@ case $host_os in
+     linux*)
+         OS_CFLAGS="-D_XOPEN_SOURCE"
+         ;;
+-    darwin*)
+-        OS_CFLAGS="-Wl,-flat_namespace"
+-	;;
+     *)
+         OS_CFLAGS=
+         ;;
+diff --git a/src/stubs/stubs.h b/src/stubs/stubs.h
+index c09c675..9e71806 100644
+--- a/src/stubs/stubs.h
++++ b/src/stubs/stubs.h
+@@ -10,7 +10,7 @@
+ #endif
+ 
+ /* this probably works for Mach-O too, but probably not for PE */
+-#if (defined(__APPLE__) || defined(__ELF__)) && defined(__GNUC__) && (__GNUC__ >= 3)
++#if defined(__ELF__) && defined(__GNUC__) && (__GNUC__ >= 3)
+ #define weak __attribute__((weak))
+ #else
+ #define weak
+@@ -67,15 +67,6 @@ extern void (*__register_fpe_functions)(void);
+ #define OVERRIDE_VA_SYMBOL(sym,f)
+ #endif
+ 
+-/* This is really just a hack for now... __APPLE__ really should be using
+- * the weak symbols route above, but it's causing an as-yet unresolved issue,
+- * so we're instead building with flat_namespace.
+- */
+-#ifdef __APPLE__
+-#undef weak
+-#define weak
+-#endif
+-
+ extern FontPtr find_old_font ( FSID id );
+ extern int set_font_authorizations ( char **authorizations,
+ 				     int *authlen,
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0006-Fix-warnings.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0006-Fix-warnings.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0006-Fix-warnings.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,96 @@
+From bee4a764ccef46101dca03c70d4ad1793a5a5d78 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Mon, 7 Dec 2015 15:46:13 -0800
+Subject: [PATCH 06/10] Fix warnings
+
+Mostly signed vs unsigned comparisons
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+
+Squashed commit of three cherry-picks from master:
+(cherry picked from commit eb67d10ae82b364a4324e96ce53baaa4e5e75f97)
+(cherry picked from commit eefc0b0b908eb8533e704d7156ce983ad7891cc5)
+(cherry picked from commit d967caa988eaabd9e84c82879e2f21bd33b952a7)
+---
+ src/FreeType/ftfuncs.c | 12 ++++++------
+ src/bitmap/bdfread.c   |  4 ++--
+ src/bitmap/pcfread.c   |  1 -
+ 3 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/src/FreeType/ftfuncs.c b/src/FreeType/ftfuncs.c
+index c440fde..df64f5e 100644
+--- a/src/FreeType/ftfuncs.c
++++ b/src/FreeType/ftfuncs.c
+@@ -474,7 +474,7 @@ FreeTypeOpenInstance(FTInstancePtr *instance_return, FTFacePtr face,
+     if( FT_IS_SFNT( face->face ) ) {
+ #if 1
+         FT_F26Dot6  tt_char_width, tt_char_height, tt_dim_x, tt_dim_y;
+-        FT_UInt     nn;
++        FT_Int     nn;
+ 
+         instance->strike_index=0xFFFFU;
+ 
+@@ -1454,7 +1454,7 @@ FreeTypeRasteriseGlyph(unsigned idx, int flags, CharInfoPtr tgp,
+ 	}
+ 	for( i = MAX(0, dy) ; i<ht ; i++ ){
+ 	    int prev_jj,jj;
+-	    if( bitmap->rows <= i-dy ) break;
++	    if( bitmap->rows <= (unsigned) (i-dy) ) break;
+ 	    current_buffer=(unsigned char *)(bitmap->buffer+bitmap->pitch*(i-dy));
+ 	    current_raster=(unsigned char *)(raster+i*bpr);
+ 	    j       = MAX(0,div_dx);
+@@ -2985,13 +2985,13 @@ ft_compute_bounds(FTFontPtr font, FontInfoPtr pinfo, FontScalablePtr vals )
+           c = row<<8|col;
+           flags=0;
+           if ( !force_c_outside ) {
+-              if ( c <= instance->ttcap.forceConstantSpacingEnd
+-		   && instance->ttcap.forceConstantSpacingBegin <= c )
++	      if ( (signed) c <= instance->ttcap.forceConstantSpacingEnd
++		   && instance->ttcap.forceConstantSpacingBegin <= (signed) c )
+                   flags|=FT_FORCE_CONSTANT_SPACING;
+           }
+           else {        /* for GB18030 proportional */
+-              if ( c <= instance->ttcap.forceConstantSpacingEnd
+-		   || instance->ttcap.forceConstantSpacingBegin <= c )
++              if ( (signed) c <= instance->ttcap.forceConstantSpacingEnd
++		   || instance->ttcap.forceConstantSpacingBegin <= (signed) c )
+                   flags|=FT_FORCE_CONSTANT_SPACING;
+           }
+ #if 0
+diff --git a/src/bitmap/bdfread.c b/src/bitmap/bdfread.c
+index eccd7b7..f343eed 100644
+--- a/src/bitmap/bdfread.c
++++ b/src/bitmap/bdfread.c
+@@ -298,7 +298,7 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
+ 	bdfError("invalid number of CHARS in BDF file\n");
+ 	return (FALSE);
+     }
+-    if (nchars > INT32_MAX / sizeof(CharInfoRec)) {
++    if (nchars > (signed) (INT32_MAX / sizeof(CharInfoRec))) {
+ 	bdfError("Couldn't allocate pCI (%d*%d)\n", nchars,
+ 		 (int) sizeof(CharInfoRec));
+ 	goto BAILOUT;
+@@ -631,7 +631,7 @@ bdfReadProperties(FontFilePtr file, FontPtr pFont, bdfFileState *pState)
+     }
+     if ((sscanf((char *) line, "STARTPROPERTIES %d", &nProps) != 1) ||
+ 	(nProps <= 0) ||
+-	(nProps > ((INT32_MAX / sizeof(FontPropRec)) - BDF_GENPROPS))) {
++	(nProps > (signed) ((INT32_MAX / sizeof(FontPropRec)) - BDF_GENPROPS))) {
+ 	bdfError("bad 'STARTPROPERTIES'\n");
+ 	return (FALSE);
+     }
+diff --git a/src/bitmap/pcfread.c b/src/bitmap/pcfread.c
+index 34eeeb7..33871ae 100644
+--- a/src/bitmap/pcfread.c
++++ b/src/bitmap/pcfread.c
+@@ -487,7 +487,6 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
+     for (i = 0; i < GLYPHPADOPTIONS; i++) {
+ 	bitmapSizes[i] = pcfGetINT32(file, format);
+ 	if (IS_EOF(file)) goto Bail;
+-	if (bitmapSizes[i] < 0) goto Bail;
+     }
+ 
+     sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)];
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0007-FreeType-Correct-an-allocation-size.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0007-FreeType-Correct-an-allocation-size.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0007-FreeType-Correct-an-allocation-size.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,34 @@
+From dfa572ea522a3019e91f2de7854b252c629342f2 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Sun, 29 May 2016 23:29:50 -0700
+Subject: [PATCH 07/10] FreeType: Correct an allocation size
+
+Found by clang static analysis:
+    Result of 'calloc' is converted to a pointer of type 'int', which is
+    incompatible with sizeof operand type 'int *'
+
+This is likely benign because the old size was larger on any platform where
+sizeof(int) <= sizeof(void *), which is everywhere.
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+(cherry picked from commit d0fff111992fed9d9bfbf0c19e136bda9ba1db55)
+---
+ src/FreeType/ftfuncs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/FreeType/ftfuncs.c b/src/FreeType/ftfuncs.c
+index df64f5e..703353d 100644
+--- a/src/FreeType/ftfuncs.c
++++ b/src/FreeType/ftfuncs.c
+@@ -622,7 +622,7 @@ FreeTypeInstanceFindGlyph(unsigned idx_in, int flags, FTInstancePtr instance,
+     offset = idx - segment * FONTSEGMENTSIZE;
+ 
+     if((*available)[segment] == NULL) {
+-        (*available)[segment] = calloc(FONTSEGMENTSIZE, sizeof(int *));
++        (*available)[segment] = calloc(FONTSEGMENTSIZE, sizeof(int));
+         if((*available)[segment] == NULL)
+             return AllocError;
+     }
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0008-bitmap-Bail-out-on-invalid-input-to-FontFileMakeDir-.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0008-bitmap-Bail-out-on-invalid-input-to-FontFileMakeDir-.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0008-bitmap-Bail-out-on-invalid-input-to-FontFileMakeDir-.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,33 @@
+From 3eddbca2690381bbbaf14adadb2679eea702095f Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Sun, 29 May 2016 23:34:35 -0700
+Subject: [PATCH 08/10] bitmap: Bail out on invalid input to FontFileMakeDir
+ instead of calling calloc for 0 bytes
+
+Found by clang static analysis:
+    Call to 'calloc' has an allocation size of 0 bytes
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+(cherry picked from commit ac559fad20bbae45332c758abb6a790c3fd341a2)
+---
+ src/bitmap/bitscale.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c
+index c9af4c0..13ed924 100644
+--- a/src/bitmap/bitscale.c
++++ b/src/bitmap/bitscale.c
+@@ -1479,6 +1479,10 @@ BitmapScaleBitmaps(FontPtr pf,          /* scaled font */
+     lastRow = pfi->lastRow;
+ 
+     nchars = (lastRow - firstRow + 1) * (lastCol - firstCol + 1);
++    if (nchars <= 0) {
++        goto bail;
++    }
++
+     glyph = pf->glyph;
+     for (i = 0; i < nchars; i++)
+     {
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0009-fserve-Silence-a-Wformat-warning.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0009-fserve-Silence-a-Wformat-warning.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0009-fserve-Silence-a-Wformat-warning.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,34 @@
+From 2b09a7af9f19db886567e524f978ad393593f7c0 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Sun, 29 May 2016 23:37:13 -0700
+Subject: [PATCH 09/10] fserve: Silence a -Wformat warning
+
+src/fc/fserve.c:653:32: warning: format specifies type 'int' but the argument has type 'CARD32' (aka 'unsigned long') [-Wformat]
+               " from font server\n", rep->length);
+                                      ^~~~~~~~~~~
+1 warning generated.
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+(cherry picked from commit e6009adbc89ec3e1f924bcb57b333c1c02f5e66d)
+---
+ src/fc/fserve.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/fc/fserve.c b/src/fc/fserve.c
+index 92b0d53..bbaa8bf 100644
+--- a/src/fc/fserve.c
++++ b/src/fc/fserve.c
+@@ -631,8 +631,8 @@ fs_get_reply (FSFpePtr conn, int *error)
+      */
+     if (rep->length > MAX_REPLY_LENGTH)
+     {
+-	ErrorF("fserve: reply length %d > MAX_REPLY_LENGTH, disconnecting"
+-	       " from font server\n", rep->length);
++	ErrorF("fserve: reply length %ld > MAX_REPLY_LENGTH, disconnecting"
++	       " from font server\n", (long)rep->length);
+ 	_fs_connection_died (conn);
+ 	*error = FSIO_ERROR;
+ 	return 0;
+-- 
+2.8.3
+

Added: trunk/dports/x11/xorg-libXfont/files/0010-fserve-Fix-a-buffer-read-overrun-in-_fs_client_acces.patch
===================================================================
--- trunk/dports/x11/xorg-libXfont/files/0010-fserve-Fix-a-buffer-read-overrun-in-_fs_client_acces.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-libXfont/files/0010-fserve-Fix-a-buffer-read-overrun-in-_fs_client_acces.patch	2016-05-31 04:32:15 UTC (rev 149109)
@@ -0,0 +1,62 @@
+From 42d85d1293b2753f3f200de0e960bacef0c973c7 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Mon, 30 May 2016 00:46:21 -0700
+Subject: [PATCH 10/10] fserve: Fix a buffer read overrun in _fs_client_access
+
+https://bugs.freedesktop.org/show_bug.cgi?id=83224
+
+Found by clang's Address Sanitizer
+
+	crac.num_auths = set_font_authorizations(&authorizations, &authlen,
+						 client);
+	/* Work around bug in xfs versions up through modular release 1.0.8
+	   which rejects CreateAC packets with num_auths = 0 & authlen < 4 */
+	if (crac.num_auths == 0) {
+	    authorizations = padding;
+	    authlen = 4;
+	} else {
+	    authlen = (authlen + 3) & ~0x3;
+	}
+	crac.length = (sizeof (fsCreateACReq) + authlen) >> 2;
+	crac.acid = cur->acid;
+	_fs_add_req_log(conn, FS_CreateAC);
+	_fs_write(conn, (char *) &crac, sizeof (fsCreateACReq));
+	_fs_write(conn, authorizations, authlen);
+
+In the case in the report, set_font_authorizations setup authorizations as a
+34 byte buffer (and authlen set to 34 as one would expect). The following
+block changed authlen to 36 to make it 4byte aligned and the final _fs_write()
+caused us to read 36 bytes from this 34 byte buffer.
+
+This changes the incorrect size increase to instead use _fs_write_pad which
+takes care of the padding for us.
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+(cherry picked from commit 6972ea08ee5b2ef1cfbdc2fcaf14f06bbd391561)
+---
+ src/fc/fserve.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/fc/fserve.c b/src/fc/fserve.c
+index bbaa8bf..4fb5551 100644
+--- a/src/fc/fserve.c
++++ b/src/fc/fserve.c
+@@ -2850,14 +2850,12 @@ _fs_client_access (FSFpePtr conn, pointer client, Bool sync)
+ 	if (crac.num_auths == 0) {
+ 	    authorizations = padding;
+ 	    authlen = 4;
+-	} else {
+-	    authlen = (authlen + 3) & ~0x3;
+ 	}
+ 	crac.length = (sizeof (fsCreateACReq) + authlen) >> 2;
+ 	crac.acid = cur->acid;
+ 	_fs_add_req_log(conn, FS_CreateAC);
+ 	_fs_write(conn, (char *) &crac, sizeof (fsCreateACReq));
+-	_fs_write(conn, authorizations, authlen);
++	_fs_write_pad(conn, authorizations, authlen);
+ 	/* ignore reply; we don't even care about it */
+ 	conn->curacid = 0;
+ 	cur->auth_generation = client_auth_generation(client);
+-- 
+2.8.3
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20160530/7c531b96/attachment-0001.html>


More information about the macports-changes mailing list