summaryrefslogtreecommitdiff
path: root/core/glibc
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2013-12-27 23:55:53 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2013-12-27 23:55:53 +0000
commit65eeff79fff8a1bfdf67ca51d147384f46f4d5c0 (patch)
treefbfdff322b28d9a3c37e6e31c94caf1d8e48dac1 /core/glibc
parentd53c44f055929b18d7d1b25f8367ee5836c435fc (diff)
Fri Dec 27 23:54:04 UTC 2013
Diffstat (limited to 'core/glibc')
-rw-r--r--core/glibc/PKGBUILD9
-rw-r--r--core/glibc/glibc-2.18-scanf-parse-0e-0.patch67
2 files changed, 74 insertions, 2 deletions
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 <allan@archlinux.org>
# 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
+