r6693 - in glibc-package/branches/glibc-2.21/debian: . patches patches/any
Author: aurel32
Date: 2015-11-22 18:26:33 +0000 (Sun, 22 Nov 2015)
New Revision: 6693
Removed:
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-make-typo.diff
Modified:
glibc-package/branches/glibc-2.21/debian/changelog
glibc-package/branches/glibc-2.21/debian/patches/git-updates.diff
glibc-package/branches/glibc-2.21/debian/patches/series
Log:
* Update from upstream stable branch:
- patches/any/cvs-make-typo.diff: Merged.
Modified: glibc-package/branches/glibc-2.21/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.21/debian/changelog 2015-11-22 18:13:29 UTC (rev 6692)
+++ glibc-package/branches/glibc-2.21/debian/changelog 2015-11-22 18:26:33 UTC (rev 6693)
@@ -40,6 +40,8 @@
check-localplt test with recent binutils version on x86.
* patches/hppa/submitted-gmon-start.diff: new patch from upstream to
fix __gmon_start__ symbol proliferation on hppa. Closes: #805730.
+ * Update from upstream stable branch:
+ - patches/any/cvs-make-typo.diff: Merged.
[ Samuel Thibault ]
* patches/hurd-i386/tg-pagesize.diff: Refresh.
Deleted: glibc-package/branches/glibc-2.21/debian/patches/any/cvs-make-typo.diff
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/any/cvs-make-typo.diff 2015-11-22 18:13:29 UTC (rev 6692)
+++ glibc-package/branches/glibc-2.21/debian/patches/any/cvs-make-typo.diff 2015-11-22 18:26:33 UTC (rev 6693)
@@ -1,19 +0,0 @@
-commit e8b6be0016f131c2ac72bf3213eabdb59800e63b
-Author: Andreas Schwab <schwab@suse.de>
-Date: Mon Mar 2 15:47:56 2015 +0100
-
- Fix parallel build error
-
-diff --git a/elf/Makefile b/elf/Makefile
-index 20b1682..711beed 100644
---- a/elf/Makefile
-+++ b/elf/Makefile
-@@ -362,7 +362,7 @@ $(objpfx)interp.os: $(elf-objpfx)runtime-linker.h
-
- $(elf-objpfx)runtime-linker.h: $(elf-objpfx)runtime-linker.st; @:
- $(elf-objpfx)runtime-linker.st: $(common-objpfx)config.make
-- $(name-target-directory)
-+ $(make-target-directory)
- echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
- > ${@:st=T}
- $(move-if-change) ${@:st=T} ${@:st=h}
Modified: glibc-package/branches/glibc-2.21/debian/patches/git-updates.diff
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/git-updates.diff 2015-11-22 18:13:29 UTC (rev 6692)
+++ glibc-package/branches/glibc-2.21/debian/patches/git-updates.diff 2015-11-22 18:26:33 UTC (rev 6693)
@@ -1,10 +1,33 @@
GIT update of git://sourceware.org/git/glibc.git/release/2.21/master from glibc-2.21
diff --git a/ChangeLog b/ChangeLog
-index dc1ed1b..61e6671 100644
+index dc1ed1b..868d355 100644
--- a/ChangeLog
+++ b/ChangeLog
-@@ -1,3 +1,40 @@
+@@ -1,3 +1,63 @@
++2015-03-02 Andreas Schwab <schwab@suse.de>
++
++ * elf/Makefile ($(elf-objpfx)runtime-linker.st): Fix typo in
++ variable name.
++
++2015-04-29 Florian Weimer <fweimer@redhat.com>
++
++ [BZ #18007]
++ * nss/nss_files/files-XXX.c (CONCAT): Always enable stayopen.
++ (CVE-2014-8121)
++ * nss/tst-nss-getpwent.c: New file.
++ * nss/Makefile (tests): Add new test.
++
++2015-08-28 Mike Frysinger <vapier@gentoo.org>
++
++ [BZ #18887]
++ * misc/Makefile (tests): Add tst-mntent-blank-corrupt and
++ tst-mntent-blank-passno.
++ * misc/mntent_r.c (__getmntent_r): Do not read past buffer[0].
++ * misc/tst-mntent-blank-corrupt.c: New test.
++ * misc/tst-mntent-blank-passno.c: New test ripped from ...
++ * misc/tst-mntent.c (do_test): ... here.
++
+2015-07-27 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Define
@@ -45,7 +68,7 @@
2015-02-06 Carlos O'Donell <carlos@systemhalted.org>
* version.h (RELEASE): Set to "stable".
-@@ -7,6 +44,7 @@
+@@ -7,6 +67,7 @@
* sysdeps/unix/sysv/linux/hppa/pthread.h: Sync with pthread.h.
2015-02-05 Paul Pluzhnikov <ppluzhnikov@google.com>
@@ -54,10 +77,10 @@
[BZ #16618]
* stdio-common/tst-sscanf.c (main): Test for buffer overflow.
diff --git a/NEWS b/NEWS
-index 617cdbb..e3588fc 100644
+index 617cdbb..3014c08 100644
--- a/NEWS
+++ b/NEWS
-@@ -5,6 +5,23 @@ See the end for copying conditions.
+@@ -5,6 +5,28 @@ See the end for copying conditions.
Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
using `glibc' in the "product" field.
@@ -65,7 +88,7 @@
+
+* The following bugs are resolved with this release:
+
-+ 17269, 17949, 18032, 18287, 18694.
++ 17269, 17949, 18007, 18032, 18287, 18694, 18887.
+
+* A buffer overflow in gethostbyname_r and related functions performing DNS
+ requests has been fixed. If the NSS functions were called with a
@@ -77,11 +100,16 @@
+* The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
+ releases. It has been fixed to match 2.19 and older, but binaries built
+ against 2.20 and 2.21 might need to be recompiled. See BZ#18694.
++
++* CVE-2014-8121 The NSS files backend would reset the file pointer used by
++ the get*ent functions if any of the query functions for the same database
++ are used during the iteration, causing a denial-of-service condition in
++ some applications.
+
Version 2.21
* The following bugs are resolved with this release:
-@@ -21,10 +38,11 @@ Version 2.21
+@@ -21,10 +43,11 @@ Version 2.21
17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
17892.
@@ -97,6 +125,19 @@
* A new semaphore algorithm has been implemented in generic C code for all
machines. Previous custom assembly implementations of semaphore were
+diff --git a/elf/Makefile b/elf/Makefile
+index e5b142c..62fe245 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -358,7 +358,7 @@ $(objpfx)interp.os: $(elf-objpfx)runtime-linker.h
+
+ $(elf-objpfx)runtime-linker.h: $(elf-objpfx)runtime-linker.st; @:
+ $(elf-objpfx)runtime-linker.st: $(common-objpfx)config.make
+- $(name-target-directory)
++ $(make-target-directory)
+ echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
+ > ${@:st=T}
+ $(move-if-change) ${@:st=T} ${@:st=h}
diff --git a/libio/wstrops.c b/libio/wstrops.c
index 43d847d..3993579 100644
--- a/libio/wstrops.c
@@ -124,6 +165,326 @@
wchar_t *oldbuf = wd->_IO_buf_base;
wchar_t *newbuf
= (wchar_t *) (*((_IO_strfile *) fp)->_s._allocate_buffer) (newsize
+diff --git a/misc/Makefile b/misc/Makefile
+index aecb0da..2f5edf6 100644
+--- a/misc/Makefile
++++ b/misc/Makefile
+@@ -76,7 +76,8 @@ install-lib := libg.a
+ gpl2lgpl := error.c error.h
+
+ tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
+- tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1
++ tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1 \
++ tst-mntent-blank-corrupt tst-mntent-blank-passno
+ ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)tst-error1-mem.out
+ endif
+diff --git a/misc/mntent_r.c b/misc/mntent_r.c
+index 6159873..4f26998 100644
+--- a/misc/mntent_r.c
++++ b/misc/mntent_r.c
+@@ -136,7 +136,9 @@ __getmntent_r (FILE *stream, struct mntent *mp, char *buffer, int bufsiz)
+ end_ptr = strchr (buffer, '\n');
+ if (end_ptr != NULL) /* chop newline */
+ {
+- while (end_ptr[-1] == ' ' || end_ptr[-1] == '\t')
++ /* Do not walk past the start of buffer if it's all whitespace. */
++ while (end_ptr != buffer
++ && (end_ptr[-1] == ' ' || end_ptr[-1] == '\t'))
+ end_ptr--;
+ *end_ptr = '\0';
+ }
+diff --git a/misc/tst-mntent-blank-corrupt.c b/misc/tst-mntent-blank-corrupt.c
+new file mode 100644
+index 0000000..92266a3
+--- /dev/null
++++ b/misc/tst-mntent-blank-corrupt.c
+@@ -0,0 +1,45 @@
++/* Make sure blank lines does not cause memory corruption BZ #18887.
++
++ Copyright (C) 2009-2015 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <mntent.h>
++#include <stdio.h>
++#include <string.h>
++
++/* Make sure blank lines don't trigger memory corruption. This doesn't happen
++ for all targets though, so it's a best effort test BZ #18887. */
++static int
++do_test (void)
++{
++ FILE *fp;
++
++ fp = tmpfile ();
++ fputs ("\n \n/foo\\040dir /bar\\040dir auto bind \t \n", fp);
++ rewind (fp);
++
++ /* The corruption happens here ... */
++ getmntent (fp);
++ /* ... but trigers here. */
++ endmntent (fp);
++
++ /* If the test failed, we would crash, and not hit this point. */
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-mntent-blank-passno.c b/misc/tst-mntent-blank-passno.c
+new file mode 100644
+index 0000000..fc04291
+--- /dev/null
++++ b/misc/tst-mntent-blank-passno.c
+@@ -0,0 +1,53 @@
++/* Make sure trailing whitespace is handled properly BZ #17273.
++
++ Copyright (C) 2009-2015 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <mntent.h>
++#include <stdio.h>
++#include <string.h>
++
++/* Check entries to make sure trailing whitespace is ignored and we return the
++ correct passno value BZ #17273. */
++static int
++do_test (void)
++{
++ int result = 0;
++ FILE *fp;
++ struct mntent *mnt;
++
++ fp = tmpfile ();
++ fputs ("/foo\\040dir /bar\\040dir auto bind \t \n", fp);
++ rewind (fp);
++
++ mnt = getmntent (fp);
++ if (strcmp (mnt->mnt_fsname, "/foo dir") != 0
++ || strcmp (mnt->mnt_dir, "/bar dir") != 0
++ || strcmp (mnt->mnt_type, "auto") != 0
++ || strcmp (mnt->mnt_opts, "bind") != 0
++ || mnt->mnt_freq != 0
++ || mnt->mnt_passno != 0)
++ {
++ puts ("Error while reading entry with trailing whitespaces");
++ result = 1;
++ }
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-mntent.c b/misc/tst-mntent.c
+index 876c89f..820b354 100644
+--- a/misc/tst-mntent.c
++++ b/misc/tst-mntent.c
+@@ -73,26 +73,6 @@ main (int argc, char *argv[])
+ puts ("Error while reading written entry back in");
+ result = 1;
+ }
+-
+- /* Part III: Entry with whitespaces at the end of a line. */
+- rewind (fp);
+-
+- fputs ("/foo\\040dir /bar\\040dir auto bind \t \n", fp);
+-
+- rewind (fp);
+-
+- mnt = getmntent (fp);
+-
+- if (strcmp (mnt->mnt_fsname, "/foo dir") != 0
+- || strcmp (mnt->mnt_dir, "/bar dir") != 0
+- || strcmp (mnt->mnt_type, "auto") != 0
+- || strcmp (mnt->mnt_opts, "bind") != 0
+- || mnt->mnt_freq != 0
+- || mnt->mnt_passno != 0)
+- {
+- puts ("Error while reading entry with trailing whitespaces");
+- result = 1;
+- }
+ }
+
+ return result;
+diff --git a/nss/Makefile b/nss/Makefile
+index d419baf..dc351dd 100644
+--- a/nss/Makefile
++++ b/nss/Makefile
+@@ -39,7 +39,7 @@ install-bin := getent makedb
+ makedb-modules = xmalloc hash-string
+ extra-objs += $(makedb-modules:=.o)
+
+-tests = test-netdb tst-nss-test1 test-digits-dots
++tests = test-netdb tst-nss-test1 test-digits-dots tst-nss-getpwent
+ xtests = bug-erange
+
+ # Specify rules for the nss_* modules. We have some services.
+diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c
+index a7a45e5..a7ce5ea 100644
+--- a/nss/nss_files/files-XXX.c
++++ b/nss/nss_files/files-XXX.c
+@@ -134,7 +134,7 @@ CONCAT(_nss_files_set,ENTNAME) (int stayopen)
+
+ __libc_lock_lock (lock);
+
+- status = internal_setent (stayopen);
++ status = internal_setent (1);
+
+ if (status == NSS_STATUS_SUCCESS && fgetpos (stream, &position) < 0)
+ {
+diff --git a/nss/tst-nss-getpwent.c b/nss/tst-nss-getpwent.c
+new file mode 100644
+index 0000000..f2e8abc
+--- /dev/null
++++ b/nss/tst-nss-getpwent.c
+@@ -0,0 +1,118 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <pwd.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++int
++do_test (void)
++{
++ /* Count the number of entries in the password database, and fetch
++ data from the first and last entries. */
++ size_t count = 0;
++ struct passwd * pw;
++ char *first_name = NULL;
++ uid_t first_uid = 0;
++ char *last_name = NULL;
++ uid_t last_uid = 0;
++ setpwent ();
++ while ((pw = getpwent ()) != NULL)
++ {
++ if (first_name == NULL)
++ {
++ first_name = strdup (pw->pw_name);
++ if (first_name == NULL)
++ {
++ printf ("strdup: %m\n");
++ return 1;
++ }
++ first_uid = pw->pw_uid;
++ }
++
++ free (last_name);
++ last_name = strdup (pw->pw_name);
++ if (last_name == NULL)
++ {
++ printf ("strdup: %m\n");
++ return 1;
++ }
++ last_uid = pw->pw_uid;
++ ++count;
++ }
++ endpwent ();
++
++ if (count == 0)
++ {
++ printf ("No entries in the password database.\n");
++ return 0;
++ }
++
++ /* Try again, this time interleaving with name-based and UID-based
++ lookup operations. The counts do not match if the interleaved
++ lookups affected the enumeration. */
++ size_t new_count = 0;
++ setpwent ();
++ while ((pw = getpwent ()) != NULL)
++ {
++ if (new_count == count)
++ {
++ printf ("Additional entry in the password database.\n");
++ return 1;
++ }
++ ++new_count;
++ struct passwd *pw2 = getpwnam (first_name);
++ if (pw2 == NULL)
++ {
++ printf ("getpwnam (%s) failed: %m\n", first_name);
++ return 1;
++ }
++ pw2 = getpwnam (last_name);
++ if (pw2 == NULL)
++ {
++ printf ("getpwnam (%s) failed: %m\n", last_name);
++ return 1;
++ }
++ pw2 = getpwuid (first_uid);
++ if (pw2 == NULL)
++ {
++ printf ("getpwuid (%llu) failed: %m\n",
++ (unsigned long long) first_uid);
++ return 1;
++ }
++ pw2 = getpwuid (last_uid);
++ if (pw2 == NULL)
++ {
++ printf ("getpwuid (%llu) failed: %m\n",
++ (unsigned long long) last_uid);
++ return 1;
++ }
++ }
++ endpwent ();
++ if (new_count < count)
++ {
++ printf ("Missing entry in the password database.\n");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
index c0cb2fc..72c5d8f 100644
--- a/posix/fnmatch_loop.c
Modified: glibc-package/branches/glibc-2.21/debian/patches/series
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/series 2015-11-22 18:13:29 UTC (rev 6692)
+++ glibc-package/branches/glibc-2.21/debian/patches/series 2015-11-22 18:26:33 UTC (rev 6693)
@@ -268,7 +268,6 @@
any/local-tester-gcc-4.9.diff
any/local-xfail-stdlib-linkns.diff
any/cvs-localplt-new-readelf.diff
-any/cvs-make-typo.diff
any/cvs-logbl-accuracy.diff
any/local-math-logb.diff
any/cvs-ld_pointer_guard.diff
Reply to: