From 65eeff79fff8a1bfdf67ca51d147384f46f4d5c0 Mon Sep 17 00:00:00 2001 From: Nicolás Reynolds Date: Fri, 27 Dec 2013 23:55:53 +0000 Subject: Fri Dec 27 23:54:04 UTC 2013 --- core/glibc/PKGBUILD | 9 +++- core/glibc/glibc-2.18-scanf-parse-0e-0.patch | 67 ++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 core/glibc/glibc-2.18-scanf-parse-0e-0.patch (limited to 'core/glibc') diff --git a/core/glibc/PKGBUILD b/core/glibc/PKGBUILD index 0cda50b39..3deb8cd15 100644 --- a/core/glibc/PKGBUILD +++ b/core/glibc/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 197798 2013-10-30 10:37:54Z allan $ +# $Id: PKGBUILD 201557 2013-12-15 06:41:32Z allan $ # Maintainer: Allan McRae # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc @@ -8,7 +8,7 @@ pkgname=glibc pkgver=2.18 -pkgrel=9 +pkgrel=11 pkgdesc="GNU C Library" arch=('i686' 'x86_64') url="http://www.gnu.org/software/libc" @@ -29,6 +29,7 @@ source=(http://ftp.gnu.org/gnu/libc/${pkgname}-${pkgver}.tar.xz{,.sig} glibc-2.18-ptr-mangle-CVE-2013-4788.patch glibc-2.18-getaddrinfo-CVE-2013-4458.patch glibc-2.18-getaddrinfo-assertion.patch + glibc-2.18-scanf-parse-0e-0.patch glibc-2.18-strstr-hackfix.patch nscd.service nscd.tmpfiles @@ -43,6 +44,7 @@ md5sums=('88fbbceafee809e82efd52efa1e3c58f' '9749ba386b08a8fe53e7ecede9bf2dfb' '71329fccb8eb583fb0d67b55f1e8df68' 'd4d86add33f22125777e0ecff06bc9bb' + '01d19fe9b2aea489cf5651530e0369f2' '4441f6dfe7d75ced1fa75e54dd21d36e' 'd5fab2cd3abea65aa5ae696ea4a47d6b' 'da662ca76e7c8d7efbc7986ab7acea2d' @@ -73,6 +75,9 @@ prepare() { # upstream commit 894f3f10 patch -p1 -i $srcdir/glibc-2.18-getaddrinfo-assertion.patch + # upstream commit a4966c61 + patch -p1 -i $srcdir/glibc-2.18-scanf-parse-0e-0.patch + # hack fix for strstr issues on x86 patch -p1 -i $srcdir/glibc-2.18-strstr-hackfix.patch diff --git a/core/glibc/glibc-2.18-scanf-parse-0e-0.patch b/core/glibc/glibc-2.18-scanf-parse-0e-0.patch new file mode 100644 index 000000000..651e56590 --- /dev/null +++ b/core/glibc/glibc-2.18-scanf-parse-0e-0.patch @@ -0,0 +1,67 @@ +diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c +index 1edb227..3c34f58 100644 +--- a/stdio-common/tst-sscanf.c ++++ b/stdio-common/tst-sscanf.c +@@ -109,6 +109,19 @@ struct test double_tests[] = + { L("-inf"), L("%g"), 1 } + }; + ++struct test2 ++{ ++ const CHAR *str; ++ const CHAR *fmt; ++ int retval; ++ char residual; ++} double_tests2[] = ++{ ++ { L("0e+0"), L("%g%c"), 1, 0 }, ++ { L("0xe+0"), L("%g%c"), 2, '+' }, ++ { L("0x.e+0"), L("%g%c"), 2, '+' }, ++}; ++ + int + main (void) + { +@@ -196,5 +209,26 @@ main (void) + } + } + ++ for (i = 0; i < sizeof (double_tests2) / sizeof (double_tests2[0]); ++i) ++ { ++ double dummy; ++ int ret; ++ char c = 0; ++ ++ if ((ret = SSCANF (double_tests2[i].str, double_tests2[i].fmt, ++ &dummy, &c)) != double_tests2[i].retval) ++ { ++ printf ("double_tests2[%d] returned %d != %d\n", ++ i, ret, double_tests2[i].retval); ++ result = 1; ++ } ++ else if (ret == 2 && c != double_tests2[i].residual) ++ { ++ printf ("double_tests2[%d] stopped at '%c' != '%c'\n", ++ i, c, double_tests2[i].residual); ++ result = 1; ++ } ++ } ++ + return result; + } +diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c +index 78dc2fc..e6fa8f3 100644 +--- a/stdio-common/vfscanf.c ++++ b/stdio-common/vfscanf.c +@@ -1966,6 +1966,8 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr, + if (width > 0) + --width; + } ++ else ++ got_digit = 1; + } + + while (1) +-- +1.8.4.2 + -- cgit v1.2.3-54-g00ecf