Revision: 149109 https://trac.macports.org/changeset/149109 Author: jeremyhu@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@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@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@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@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@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@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@gmail.com> +Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> +Signed-off-by: Alan Coopersmith <alan.coopersmith@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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 +