diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2017-04-04 09:45:30 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2017-04-04 13:23:03 +0000 |
commit | bbd15bd9440f70e4be116b9220f522719c2c6673 (patch) | |
tree | ae16a00d1694864b550670c8696abb7267b4f8be /main/libxfont2 | |
parent | 3bce7aff1258c80727c5dc8343baa98c6cdc39c5 (diff) | |
download | aports-bbd15bd9440f70e4be116b9220f522719c2c6673.tar.bz2 aports-bbd15bd9440f70e4be116b9220f522719c2c6673.tar.xz |
main/libxfont2: move from testing
needed by xorg-server-1.19
Diffstat (limited to 'main/libxfont2')
-rw-r--r-- | main/libxfont2/APKBUILD | 45 | ||||
-rw-r--r-- | main/libxfont2/libXfont-2.0.1-misc-fixes.patch | 627 |
2 files changed, 672 insertions, 0 deletions
diff --git a/main/libxfont2/APKBUILD b/main/libxfont2/APKBUILD new file mode 100644 index 0000000000..2d9c349733 --- /dev/null +++ b/main/libxfont2/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: Natanael Copa <ncopa@alpinelinux.org> +pkgname=libxfont2 +pkgver=2.0.1 +pkgrel=0 +pkgdesc="X.Org X11 libXfont2 runtime library" +url="http://www.x.org" +arch="all" +license="MIT" +depends="" +depends_dev="" +makedepends="$depends_dev libfontenc-dev freetype-dev fontsproto zlib-dev + util-macros autoconf automake libtool" +install="" +subpackages="$pkgname-dev" +source="http://www.x.org/pub/individual/lib/libXfont2-$pkgver.tar.bz2 + libXfont-2.0.1-misc-fixes.patch + " +builddir="$srcdir/libXfont2-$pkgver" + +prepare() { + default_prepare + autoreconf -vif +} + +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-static \ + || return 1 + make || return 1 +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install || return 1 +} + +sha512sums="5e4dcb587b4d25dd41124bb50d71c30b5e29663ce675b0830def82fb6e00b64ba34e1b1ed7fad947fd0da95007aa55d14f587383e4cff08c3e0a0241c8879d16 libXfont2-2.0.1.tar.bz2 +ee75a3fbe7ed6b5713e13e48247d3a8f058e07ae0bdce0d8d0b763357be646c5f09ef75a2c38ce95708025593c9acb6486351eca76ee305874ebf942f3801989 libXfont-2.0.1-misc-fixes.patch" diff --git a/main/libxfont2/libXfont-2.0.1-misc-fixes.patch b/main/libxfont2/libXfont-2.0.1-misc-fixes.patch new file mode 100644 index 0000000000..92cf92facf --- /dev/null +++ b/main/libxfont2/libXfont-2.0.1-misc-fixes.patch @@ -0,0 +1,627 @@ +From eefc0b0b908eb8533e704d7156ce983ad7891cc5 Mon Sep 17 00:00:00 2001 +From: Keith Packard <keithp@keithp.com> +Date: Sat, 12 Dec 2015 14:54:26 -0800 +Subject: [PATCH libXfont 1/9] Revert "Add compiler warning flags". Leave + warning fixes. + +This reverts commit eb67d10ae82b364a4324e96ce53baaa4e5e75f97, but +leaves the warning fixes in place; it looks like either I was +confused, or something has changed so that XORG_DEFAULT_OPTIONS now +pulls in the appropriate compiler warnings. +--- + configure.ac | 24 ----- + m4/attributes.m4 | 283 ------------------------------------------------------- + 2 files changed, 307 deletions(-) + delete mode 100644 m4/attributes.m4 + +diff --git a/configure.ac b/configure.ac +index a555151..13c8c97 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,7 +25,6 @@ AC_INIT([libXfont2], [2.0.1], + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXfont2]) + AC_CONFIG_SRCDIR([Makefile.am]) + AC_CONFIG_HEADERS([config.h]) +-AC_CONFIG_MACRO_DIR([m4]) + + # Initialize Automake + AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects]) +@@ -58,27 +57,6 @@ AC_CHECK_FUNCS([poll readlink]) + # must first be located explicitly. + PKG_PROG_PKG_CONFIG + +-with_cflags="" +-if test "x$GCC" = "xyes"; then +- CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ +- -Wall \ +- -Wextra \ +- -Wno-sign-compare \ +- -Wno-missing-field-initializers \ +- -Wno-unused-parameter \ +- -Wstrict-prototypes \ +- -Wmissing-prototypes \ +- -fvisibility=hidden \ +- -pipe \ +- -fno-strict-aliasing \ +- -ffunction-sections \ +- -fdata-sections \ +- -fno-strict-aliasing \ +- -fdiagnostics-show-option \ +- -fno-common]) +-fi +-AC_SUBST([GCC_CFLAGS], $with_cflags) +- + # + # select libraries to include + # +@@ -239,8 +217,6 @@ case $host_os in + OS_CFLAGS= + ;; + esac +-OS_CFLAGS="$OS_CFLAGS $GCC_CFLAGS" +- + AC_SUBST([OS_CFLAGS]) + + AC_CONFIG_FILES([Makefile +diff --git a/m4/attributes.m4 b/m4/attributes.m4 +deleted file mode 100644 +index 5fbd43d..0000000 +--- a/m4/attributes.m4 ++++ /dev/null +@@ -1,283 +0,0 @@ +-dnl Macros to check the presence of generic (non-typed) symbols. +-dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com> +-dnl Copyright (c) 2006-2008 xine project +-dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com> +-dnl +-dnl This program is free software; you can redistribute it and/or modify +-dnl it under the terms of the GNU General Public License as published by +-dnl the Free Software Foundation; either version 2, or (at your option) +-dnl any later version. +-dnl +-dnl This program is distributed in the hope that it will be useful, +-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-dnl GNU General Public License for more details. +-dnl +-dnl You should have received a copy of the GNU General Public License +-dnl along with this program; if not, write to the Free Software +-dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +-dnl 02110-1301, USA. +-dnl +-dnl As a special exception, the copyright owners of the +-dnl macro gives unlimited permission to copy, distribute and modify the +-dnl configure scripts that are the output of Autoconf when processing the +-dnl Macro. You need not follow the terms of the GNU General Public +-dnl License when using or distributing such scripts, even though portions +-dnl of the text of the Macro appear in them. The GNU General Public +-dnl License (GPL) does govern all other use of the material that +-dnl constitutes the Autoconf Macro. +-dnl +-dnl This special exception to the GPL applies to versions of the +-dnl Autoconf Macro released by this project. When you make and +-dnl distribute a modified version of the Autoconf Macro, you may extend +-dnl this special exception to the GPL to apply to your modified version as +-dnl well. +- +-dnl Check if FLAG in ENV-VAR is supported by compiler and append it +-dnl to WHERE-TO-APPEND variable +-dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG]) +- +-AC_DEFUN([CC_CHECK_FLAG_APPEND], [ +- AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2], +- AS_TR_SH([cc_cv_$2_$3]), +- [eval "AS_TR_SH([cc_save_$2])='${$2}'" +- eval "AS_TR_SH([$2])='-Werror $3'" +- AC_LINK_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])], +- [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"], +- [eval "AS_TR_SH([cc_cv_$2_$3])='no'"]) +- eval "AS_TR_SH([$2])='$cc_save_$2'"]) +- +- AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes], +- [eval "$1='${$1} $3'"]) +-]) +- +-dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2]) +-AC_DEFUN([CC_CHECK_FLAGS_APPEND], [ +- for flag in $3; do +- CC_CHECK_FLAG_APPEND($1, $2, $flag) +- done +-]) +- +-dnl Check if the flag is supported by linker (cacheable) +-dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) +- +-AC_DEFUN([CC_CHECK_LDFLAGS], [ +- AC_CACHE_CHECK([if $CC supports $1 flag], +- AS_TR_SH([cc_cv_ldflags_$1]), +- [ac_save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $1" +- AC_LINK_IFELSE([int main() { return 1; }], +- [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"], +- [eval "AS_TR_SH([cc_cv_ldflags_$1])="]) +- LDFLAGS="$ac_save_LDFLAGS" +- ]) +- +- AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes], +- [$2], [$3]) +-]) +- +-dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for +-dnl the current linker to avoid undefined references in a shared object. +-AC_DEFUN([CC_NOUNDEFINED], [ +- dnl We check $host for which systems to enable this for. +- AC_REQUIRE([AC_CANONICAL_HOST]) +- +- case $host in +- dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads +- dnl are requested, as different implementations are present; to avoid problems +- dnl use -Wl,-z,defs only for those platform not behaving this way. +- *-freebsd* | *-openbsd*) ;; +- *) +- dnl First of all check for the --no-undefined variant of GNU ld. This allows +- dnl for a much more readable commandline, so that people can understand what +- dnl it does without going to look for what the heck -z defs does. +- for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do +- CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"]) +- break +- done +- ;; +- esac +- +- AC_SUBST([LDFLAGS_NOUNDEFINED]) +-]) +- +-dnl Check for a -Werror flag or equivalent. -Werror is the GCC +-dnl and ICC flag that tells the compiler to treat all the warnings +-dnl as fatal. We usually need this option to make sure that some +-dnl constructs (like attributes) are not simply ignored. +-dnl +-dnl Other compilers don't support -Werror per se, but they support +-dnl an equivalent flag: +-dnl - Sun Studio compiler supports -errwarn=%all +-dnl we don't test for that, it gives us false positives when gcc doesn't +-dnl actually complain about it. If someone wants to compile this on sun, let +-dnl them fix it. +-AC_DEFUN([CC_CHECK_WERROR], [ +- AC_CACHE_CHECK( +- [for $CC way to treat warnings as errors], +- [cc_cv_werror], +- [CC_CHECK_FLAG_APPEND([cc_cv_werror], [CFLAGS], [-Werror])]) +-]) +- +-AC_DEFUN([CC_CHECK_ATTRIBUTE], [ +- AC_REQUIRE([CC_CHECK_WERROR]) +- AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))], +- AS_TR_SH([cc_cv_attribute_$1]), +- [ac_save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $cc_cv_werror" +- AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])], +- [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"], +- [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"]) +- CFLAGS="$ac_save_CFLAGS" +- ]) +- +- AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes], +- [AC_DEFINE( +- AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1, +- [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))] +- ) +- $4], +- [$5]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [ +- CC_CHECK_ATTRIBUTE( +- [constructor],, +- [void __attribute__((constructor)) ctor() { int a; }], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_FORMAT], [ +- CC_CHECK_ATTRIBUTE( +- [format], [format(printf, n, n)], +- [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [ +- CC_CHECK_ATTRIBUTE( +- [format_arg], [format_arg(printf)], +- [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [ +- CC_CHECK_ATTRIBUTE( +- [visibility_$1], [visibility("$1")], +- [void __attribute__((visibility("$1"))) $1_function() { }], +- [$2], [$3]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_NONNULL], [ +- CC_CHECK_ATTRIBUTE( +- [nonnull], [nonnull()], +- [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_UNUSED], [ +- CC_CHECK_ATTRIBUTE( +- [unused], , +- [void some_function(void *foo, __attribute__((unused)) void *bar);], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [ +- CC_CHECK_ATTRIBUTE( +- [sentinel], , +- [void some_function(void *foo, ...) __attribute__((sentinel));], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [ +- CC_CHECK_ATTRIBUTE( +- [deprecated], , +- [void some_function(void *foo, ...) __attribute__((deprecated));], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_ALIAS], [ +- CC_CHECK_ATTRIBUTE( +- [alias], [weak, alias], +- [void other_function(void *foo) { } +- void some_function(void *foo) __attribute__((weak, alias("other_function")));], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_MALLOC], [ +- CC_CHECK_ATTRIBUTE( +- [malloc], , +- [void * __attribute__((malloc)) my_alloc(int n);], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_PACKED], [ +- CC_CHECK_ATTRIBUTE( +- [packed], , +- [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_CONST], [ +- CC_CHECK_ATTRIBUTE( +- [const], , +- [int __attribute__((const)) twopow(int n) { return 1 << n; } ], +- [$1], [$2]) +-]) +- +-AC_DEFUN([CC_FLAG_VISIBILITY], [ +- AC_CACHE_CHECK([if $CC supports -fvisibility=hidden], +- [cc_cv_flag_visibility], +- [CC_CHECK_FLAG_APPEND([cc_cv_flag_visibility], [CFLAGS], [-fvisibility=hidden])]) +- +- AS_IF([test "x$cc_cv_flag_visibility" != "x"], +- [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, +- [Define this if the compiler supports the -fvisibility flag]) +- $1], +- [$2]) +-]) +- +-AC_DEFUN([CC_FUNC_EXPECT], [ +- AC_REQUIRE([CC_CHECK_WERROR]) +- AC_CACHE_CHECK([if compiler has __builtin_expect function], +- [cc_cv_func_expect], +- [ac_save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $cc_cv_werror" +- AC_COMPILE_IFELSE([AC_LANG_SOURCE( +- [int some_function() { +- int a = 3; +- return (int)__builtin_expect(a, 3); +- }])], +- [cc_cv_func_expect=yes], +- [cc_cv_func_expect=no]) +- CFLAGS="$ac_save_CFLAGS" +- ]) +- +- AS_IF([test "x$cc_cv_func_expect" = "xyes"], +- [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1, +- [Define this if the compiler supports __builtin_expect() function]) +- $1], +- [$2]) +-]) +- +-AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [ +- AC_REQUIRE([CC_CHECK_WERROR]) +- AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported], +- [cc_cv_attribute_aligned], +- [ac_save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $cc_cv_werror" +- for cc_attribute_align_try in 64 32 16 8 4 2; do +- AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +- int main() { +- static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0; +- return c; +- }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break]) +- done +- CFLAGS="$ac_save_CFLAGS" +- ]) +- +- if test "x$cc_cv_attribute_aligned" != "x"; then +- AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned], +- [Define the highest alignment supported]) +- fi +-]) +-- +2.9.3 + +From d0fff111992fed9d9bfbf0c19e136bda9ba1db55 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 libXfont 2/9] 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> +--- + 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 bbd4db4..e7c8026 100644 +--- a/src/FreeType/ftfuncs.c ++++ b/src/FreeType/ftfuncs.c +@@ -623,7 +623,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.9.3 + +From ac559fad20bbae45332c758abb6a790c3fd341a2 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 libXfont 3/9] 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> +--- + src/bitmap/bitscale.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c +index 22747a9..00adcc6 100644 +--- a/src/bitmap/bitscale.c ++++ b/src/bitmap/bitscale.c +@@ -1477,6 +1477,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.9.3 + +From e6009adbc89ec3e1f924bcb57b333c1c02f5e66d 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 libXfont 4/9] 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> +--- + 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 42c4028..fb1941d 100644 +--- a/src/fc/fserve.c ++++ b/src/fc/fserve.c +@@ -649,8 +649,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.9.3 + +From d967caa988eaabd9e84c82879e2f21bd33b952a7 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Sun, 29 May 2016 23:39:06 -0700 +Subject: [PATCH libXfont 5/9] fstrans: Remove unused foo() function + +The point of it seems to have been to silence an unused function warning, but +there's no point if we're just transitioning that to another unused function +warning. + +src/fc/fstrans.c:32:20: warning: unused function 'foo' [-Wunused-function] +static inline void foo(void) { (void) is_numeric("a"); } + ^ +1 warning generated. + +Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Reviewed-by: Keith Packard <keithp@keithp.com> +--- + src/fc/fstrans.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/fc/fstrans.c b/src/fc/fstrans.c +index 66bc978..902ef36 100644 +--- a/src/fc/fstrans.c ++++ b/src/fc/fstrans.c +@@ -28,5 +28,3 @@ + #define FONT_t + #define TRANS_CLIENT + #include <X11/Xtrans/transport.c> +-/* inhibit warning about is_numeric */ +-static inline void foo(void) { (void) is_numeric("a"); } +-- +2.9.3 + +From 6972ea08ee5b2ef1cfbdc2fcaf14f06bbd391561 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 libXfont 6/9] 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> +--- + 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 fb1941d..708fc35 100644 +--- a/src/fc/fserve.c ++++ b/src/fc/fserve.c +@@ -2856,14 +2856,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.9.3 + +From 7557fe152d9948bcb4b805bb7b6b6f8121bd34fb Mon Sep 17 00:00:00 2001 +From: Adam Jackson <ajax@redhat.com> +Date: Wed, 18 May 2016 11:52:27 -0400 +Subject: [PATCH libXfont 7/9] configure: Use -fvisibility=hidden if available + +text data bss dec hex filename + 233732 8168 1616 243516 3b73c .libs/libXfont2.so.2.before + 217113 6816 1616 225545 37109 .libs/libXfont2.so.2.after + +Signed-off-by: Adam Jackson <ajax@redhat.com> +Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> +--- + configure.ac | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 13c8c97..062f75d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -217,6 +217,23 @@ case $host_os in + OS_CFLAGS= + ;; + esac ++ ++save_CFLAGS="$CFLAGS" ++CFLAGS="$CFLAGS -fvisibility=hidden" ++CFLAGS_VISIBILITY= ++AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE([[ ++ #if defined(__CYGWIN__) || defined(__MINGW32__) ++ #error No visibility support ++ #endif ++ extern __attribute__((__visibility__("default"))) int x; ++ ]])], ++ [CFLAGS_VISIBILITY=-fvisibility=hidden], ++ [] ++) ++CFLAGS="$save_CFLAGS" ++OS_CFLAGS="$OS_CFLAGS $CFLAGS_VISIBILITY" ++ + AC_SUBST([OS_CFLAGS]) + + AC_CONFIG_FILES([Makefile +-- +2.9.3 + +From 33a98f2b5343da927f29191348e992f505544873 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <ajax@redhat.com> +Date: Wed, 8 Jun 2016 14:28:09 -0400 +Subject: [PATCH libXfont 9/9] freetype: Fix a logic error in computing face + name + +gcc6 chirps an indentation warning here, but really this is bad code. +Effectively this would ignore en_US or en_UK names for the font, despite +that those are the English names the font is most likely to have. + +Signed-off-by: Adam Jackson <ajax@redhat.com> +Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> +--- + src/FreeType/fttools.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/FreeType/fttools.c b/src/FreeType/fttools.c +index 7c0bd9b..0329fae 100644 +--- a/src/FreeType/fttools.c ++++ b/src/FreeType/fttools.c +@@ -100,7 +100,6 @@ FTGetName(FT_Face face, int nid, int pid, int eid, FT_SfntName *name_return) + case TT_PLATFORM_MICROSOFT: + if(name.language_id != TT_MS_LANGID_ENGLISH_UNITED_STATES && + name.language_id != TT_MS_LANGID_ENGLISH_UNITED_KINGDOM) +- break; + continue; + break; + default: +-- +2.9.3 + |