SHA256
1
0
forked from pool/glibc

Accepting request 186119 from home:Andreas_Schwab:glibc

- Update to glibc 2.17.90 85891acadf1b:
  * CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
    has been fixed by disabling the use of pt_chown (Bugzilla #15755).
    Distributions can re-enable building and using pt_chown via the new configure
    option `--enable-pt_chown'.  Enabling the use of pt_chown carries with it
    considerable security risks and should only be used if the distribution
    understands and accepts the risks.
  * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
    #15078).
  * CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
    fixed (Bugzilla #15330).
  * Add support for calling C++11 thread_local object destructors on thread
    and program exit.  This needs compiler support for offloading C++11
    destructor calls to glibc.
  * Improved worst case performance of libm functions with double inputs and
    output.
  * Support for priority inherited mutexes in pthread condition variables on
    non-x86 architectures.
  * Optimized string functions for AArch64.  Implemented by Marcus Shawcroft.
  * Optimized string functions for ARM.  Implemented by Will Newton and
    Richard Henderson.
  * Added a benchmark framework to track performance of functions in glibc.
  * New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
    It is based on draft TS 18661 and currently enabled as a GNU extension.
  * On Linux, the clock function now uses the clock_gettime system call
    for improved precision, rather than old times system call.
  * Added new API functions pthread_getattr_default_np and
    pthread_setattr_default_np to get and set the default pthread
    attributes of a process.
  * Added support for TSX lock elision for pthread mutexes on i386 and x86-64.

OBS-URL: https://build.opensuse.org/request/show/186119
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=304
This commit is contained in:
Andreas Schwab 2013-08-06 14:52:55 +00:00 committed by Git OBS Bridge
parent a70ef84746
commit 746e16d2b9
51 changed files with 506 additions and 2732 deletions

View File

@ -1,38 +0,0 @@
From c272f67f9fc4c354336241ef4f3876771ccab443 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Mon, 20 May 2013 10:19:31 +0200
Subject: [PATCH] AArch64: Don't clobber argument for tail call to
__sigjmp_save in sigsetjmp
[BZ #15493]
* sysdeps/aarch64/setjmp.S (__sigsetjmp): Don't clobber register
x1.
[NOT_IN_libc && IS_IN_rtld]: Don't call __sigjmp_save.
---
ports/sysdeps/aarch64/setjmp.S | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/ports/sysdeps/aarch64/setjmp.S b/ports/sysdeps/aarch64/setjmp.S
index cff81c7..10e0709 100644
--- a/ports/sysdeps/aarch64/setjmp.S
+++ b/ports/sysdeps/aarch64/setjmp.S
@@ -44,8 +44,14 @@ ENTRY (__sigsetjmp)
stp d10, d11, [x0, #JB_D10<<3]
stp d12, d13, [x0, #JB_D12<<3]
stp d14, d15, [x0, #JB_D14<<3]
- mov x1, sp
- str x1, [x0, #JB_SP<<3]
+ mov x2, sp
+ str x2, [x0, #JB_SP<<3]
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ /* In ld.so we never save the signal mask */
+ mov w0, #0
+ RET
+#else
b C_SYMBOL_NAME(__sigjmp_save)
+#endif
END (__sigsetjmp)
hidden_def (__sigsetjmp)
--
1.8.2.3

View File

@ -1,94 +0,0 @@
From b39949d21179bd0b08a083e4f7e35d0c98e11294 Mon Sep 17 00:00:00 2001
From: Carlos O'Donell <carlos@redhat.com>
Date: Fri, 8 Feb 2013 12:26:12 -0500
Subject: [PATCH] ARM: Support loading unmarked objects from cache.
ARM now supports loading unmarked objects from
the dynamic loader cache. Unmarked objects can
be used with the hard-float or soft-float ABI.
We must support loading unmarked objects during
the transition period from a binutils that does
not mark objects to one that does mark them with
the correct ELF flags.
Signed-off-by: Carlos O'Donell <carlos@redhat.com>
---
ChangeLog | 5 +++++
elf/cache.c | 4 ++++
ports/ChangeLog.arm | 8 ++++++++
ports/sysdeps/unix/sysv/linux/arm/dl-cache.h | 9 +++++++--
ports/sysdeps/unix/sysv/linux/arm/readelflib.c | 6 ++++++
sysdeps/generic/ldconfig.h | 1 +
6 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/elf/cache.c b/elf/cache.c
index 9901952..699550b 100644
--- a/elf/cache.c
+++ b/elf/cache.c
@@ -100,6 +100,10 @@ print_entry (const char *lib, int flag, unsigned int osversion,
case FLAG_AARCH64_LIB64:
fputs (",AArch64", stdout);
break;
+ /* Uses the ARM soft-float ABI. */
+ case FLAG_ARM_LIBSF:
+ fputs (",soft-float", stdout);
+ break;
case 0:
break;
default:
diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h
index acc4f28..504feca 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h
@@ -18,12 +18,17 @@
#include <ldconfig.h>
+/* In order to support the transition from unmarked objects
+ to marked objects we must treat unmarked objects as
+ compatible with either FLAG_ARM_LIBHF or FLAG_ARM_LIBSF. */
#ifdef __ARM_PCS_VFP
# define _dl_cache_check_flags(flags) \
- ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6))
+ ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6) \
+ || (flags) == FLAG_ELF_LIBC6)
#else
# define _dl_cache_check_flags(flags) \
- ((flags) == FLAG_ELF_LIBC6)
+ ((flags) == (FLAG_ARM_LIBSF | FLAG_ELF_LIBC6) \
+ || (flags) == FLAG_ELF_LIBC6)
#endif
#include_next <dl-cache.h>
diff --git a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c
index 81e5ccb..3efb613 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c
@@ -46,6 +46,12 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD)
*flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6;
else if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_SOFT)
+ *flag = FLAG_ARM_LIBSF|FLAG_ELF_LIBC6;
+ else
+ /* We must assume the unmarked objects are compatible
+ with all ABI variants. Such objects may have been
+ generated in a transitional period when the ABI
+ tags were not added to all objects. */
*flag = FLAG_ELF_LIBC6;
}
}
diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h
index 57a9a46..91190aa 100644
--- a/sysdeps/generic/ldconfig.h
+++ b/sysdeps/generic/ldconfig.h
@@ -36,6 +36,7 @@
#define FLAG_X8664_LIBX32 0x0800
#define FLAG_ARM_LIBHF 0x0900
#define FLAG_AARCH64_LIB64 0x0a00
+#define FLAG_ARM_LIBSF 0x0b00
/* Name of auxiliary cache. */
#define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
--
1.8.2.3

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f397e09eec2ac12228659cd1b86ff93b501934bcedda6ca8e20557954694f21a
size 358200

17
cbrtl-ldbl-96.patch Normal file
View File

@ -0,0 +1,17 @@
[BZ #15749]
* sysdeps/ieee754/ldbl-96/s_cbrtl.c (__cbrtl): Use fabsl instead
of fabs.
Index: glibc-2.17.90/sysdeps/ieee754/ldbl-96/s_cbrtl.c
===================================================================
--- glibc-2.17.90.orig/sysdeps/ieee754/ldbl-96/s_cbrtl.c
+++ glibc-2.17.90/sysdeps/ieee754/ldbl-96/s_cbrtl.c
@@ -45,7 +45,7 @@ __cbrtl (long double x)
int xe;
/* Reduce X. XM now is an range 1.0 to 0.5. */
- xm = __frexpl (fabs (x), &xe);
+ xm = __frexpl (fabsl (x), &xe);
/* If X is not finite or is null return it (with raising exceptions
if necessary.

View File

@ -1,9 +1,3 @@
Index: crypt_blowfish-1.2/compat-gensalt.c
===================================================================
--- /dev/null
+++ crypt_blowfish-1.2/compat-gensalt.c
@@ -0,0 +1 @@
+#include "wrapper-gensalt.c"
Index: crypt_blowfish-1.2/crypt_blowfish.c
===================================================================
--- crypt_blowfish-1.2.orig/crypt_blowfish.c
@ -144,7 +138,7 @@ Index: crypt_blowfish-1.2/wrapper-gensalt.c
===================================================================
--- /dev/null
+++ crypt_blowfish-1.2/wrapper-gensalt.c
@@ -0,0 +1,124 @@
@@ -0,0 +1,113 @@
+/*
+ * Written by Solar Designer <solar at openwall.com> in 2000-2011.
+ * No copyright is claimed, and the software is hereby placed in the public
@ -253,20 +247,9 @@ Index: crypt_blowfish-1.2/wrapper-gensalt.c
+}
+
+#if defined(__GLIBC__) && defined(_LIBC)
+#if IS_IN_libowcrypt
+weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn)
+weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra)
+weak_alias(__crypt_gensalt, crypt_gensalt)
+#else
+#include <shlib-compat.h>
+#define ow_symbol(name) \
+ symbol_version (__##name, name, OW_CRYPT_1.0); \
+ hidden_ver (__##name, name)
+
+ow_symbol (crypt_gensalt)
+ow_symbol (crypt_gensalt_rn)
+ow_symbol (crypt_gensalt_ra)
+#endif
+#endif
+
Index: crypt_blowfish-1.2/wrapper.c

View File

@ -1,191 +0,0 @@
From 57847d6ed77fe969cc598e47452c76278a69f7bd Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Mon, 21 Jan 2013 17:41:28 +0100
Subject: [PATCH] Fix parsing of numeric hosts in gethostbyname_r
[BZ #15014]
* nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME))
[HANDLE_DIGITS_DOTS]: Set any_service when digits-dots parsing was
successful.
* nss/digits_dots.c (__nss_hostname_digits_dots): Remove
redundant variable declarations and reallocation of buffer when
parsing as IPv6 address. Always set NSS status when called from
reentrant functions. Use NETDB_INTERNAL instead of TRY_AGAIN when
buffer too small. Correct computation of needed size.
---
nss/digits_dots.c | 73 +++++++++++++++----------------------------------------
nss/getXXbyYY_r.c | 5 +++-
2 files changed, 24 insertions(+), 54 deletions(-)
diff --git a/nss/digits_dots.c b/nss/digits_dots.c
index 2b86295..e007ef4 100644
--- a/nss/digits_dots.c
+++ b/nss/digits_dots.c
@@ -46,7 +46,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
{
if (h_errnop)
*h_errnop = NETDB_INTERNAL;
- *result = NULL;
+ if (buffer_size == NULL)
+ *status = NSS_STATUS_TRYAGAIN;
+ else
+ *result = NULL;
return -1;
}
@@ -83,14 +86,16 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
}
size_needed = (sizeof (*host_addr)
- + sizeof (*h_addr_ptrs) + strlen (name) + 1);
+ + sizeof (*h_addr_ptrs)
+ + sizeof (*h_alias_ptr) + strlen (name) + 1);
if (buffer_size == NULL)
{
if (buflen < size_needed)
{
+ *status = NSS_STATUS_TRYAGAIN;
if (h_errnop != NULL)
- *h_errnop = TRY_AGAIN;
+ *h_errnop = NETDB_INTERNAL;
__set_errno (ERANGE);
goto done;
}
@@ -109,7 +114,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
*buffer_size = 0;
__set_errno (save);
if (h_errnop != NULL)
- *h_errnop = TRY_AGAIN;
+ *h_errnop = NETDB_INTERNAL;
*result = NULL;
goto done;
}
@@ -149,7 +154,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
if (! ok)
{
*h_errnop = HOST_NOT_FOUND;
- if (buffer_size)
+ if (buffer_size == NULL)
+ *status = NSS_STATUS_NOTFOUND;
+ else
*result = NULL;
goto done;
}
@@ -190,7 +197,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
if (buffer_size == NULL)
*status = NSS_STATUS_SUCCESS;
else
- *result = resbuf;
+ *result = resbuf;
goto done;
}
@@ -201,15 +208,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
if ((isxdigit (name[0]) && strchr (name, ':') != NULL) || name[0] == ':')
{
- const char *cp;
- char *hostname;
- typedef unsigned char host_addr_t[16];
- host_addr_t *host_addr;
- typedef char *host_addr_list_t[2];
- host_addr_list_t *h_addr_ptrs;
- size_t size_needed;
- int addr_size;
-
switch (af)
{
default:
@@ -225,7 +223,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
/* This is not possible. We cannot represent an IPv6 address
in an `struct in_addr' variable. */
*h_errnop = HOST_NOT_FOUND;
- *result = NULL;
+ if (buffer_size == NULL)
+ *status = NSS_STATUS_NOTFOUND;
+ else
+ *result = NULL;
goto done;
case AF_INET6:
@@ -233,42 +234,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
break;
}
- size_needed = (sizeof (*host_addr)
- + sizeof (*h_addr_ptrs) + strlen (name) + 1);
-
- if (buffer_size == NULL && buflen < size_needed)
- {
- if (h_errnop != NULL)
- *h_errnop = TRY_AGAIN;
- __set_errno (ERANGE);
- goto done;
- }
- else if (buffer_size != NULL && *buffer_size < size_needed)
- {
- char *new_buf;
- *buffer_size = size_needed;
- new_buf = realloc (*buffer, *buffer_size);
-
- if (new_buf == NULL)
- {
- save = errno;
- free (*buffer);
- __set_errno (save);
- *buffer = NULL;
- *buffer_size = 0;
- *result = NULL;
- goto done;
- }
- *buffer = new_buf;
- }
-
- memset (*buffer, '\0', size_needed);
-
- host_addr = (host_addr_t *) *buffer;
- h_addr_ptrs = (host_addr_list_t *)
- ((char *) host_addr + sizeof (*host_addr));
- hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs);
-
for (cp = name;; ++cp)
{
if (!*cp)
@@ -281,7 +246,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
if (inet_pton (AF_INET6, name, host_addr) <= 0)
{
*h_errnop = HOST_NOT_FOUND;
- if (buffer_size)
+ if (buffer_size == NULL)
+ *status = NSS_STATUS_NOTFOUND;
+ else
*result = NULL;
goto done;
}
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 1067744..44d00f4 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -179,6 +179,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
case -1:
return errno;
case 1:
+#ifdef NEED_H_ERRNO
+ any_service = true;
+#endif
goto done;
}
#endif
@@ -288,7 +291,7 @@ done:
/* Either we failed to lookup the functions or the functions themselves
had a system error. Set NETDB_INTERNAL here to let the caller know
that the errno may have the real reason for failure. */
- *h_errnop = NETDB_INTERNAL;
+ *h_errnop = NETDB_INTERNAL;
else if (status != NSS_STATUS_SUCCESS && !any_service)
/* We were not able to use any service. */
*h_errnop = NO_RECOVERY;
--
1.8.2.3

View File

@ -1,241 +0,0 @@
2013-07-21 Siddhesh Poyarekar <siddhesh@redhat.com>
Andreas Schwab <schwab@suse.de>
Roland McGrath <roland@hack.frob.com>
Joseph Myers <joseph@codesourcery.com>
Carlos O'Donell <carlos@redhat.com>
[BZ #15755]
* config.h.in: Define HAVE_PT_CHOWN.
* config.make.in (build-pt-chown): New variable.
* configure.in (--enable-pt_chown): New configure option.
* configure: Regenerate.
* login/Makefile: Include Makeconfig. Build pt_chown only if
build-pt-chown is enabled.
* sysdeps/unix/grantpt.c (grantpt) [HAVE_PT_CHOWN]: Spawn
pt_chown to fix pty ownership.
* sysdeps/unix/sysv/linux/grantpt.c [HAVE_PT_CHOWN]: Define
CLOSE_ALL_FDS.
* manual/install.texi (Configuring and compiling): Mention
--enable-pt_chown. Add @findex for grantpt.
* INSTALL: Regenerate.
Index: glibc-2.17/INSTALL
===================================================================
--- glibc-2.17.orig/INSTALL
+++ glibc-2.17/INSTALL
@@ -128,6 +128,18 @@ will be used, and CFLAGS sets optimizati
this can be prevented though there generally is no reason since it
creates compatibility problems.
+`--enable-pt_chown'
+ The file `pt_chown' is a helper binary for `grantpt' (*note
+ Pseudo-Terminals: Allocation.) that is installed setuid root to
+ fix up pseudo-terminal ownership. It is not built by default
+ because systems using the Linux kernel are commonly built with the
+ `devpts' filesystem enabled and mounted at `/dev/pts', which
+ manages pseudo-terminal ownership automatically. By using
+ `--enable-pt_chown', you may build `pt_chown' and install it
+ setuid and owned by `root'. The use of `pt_chown' introduces
+ additional security risks to the system and you should enable it
+ only if you understand and accept those risks.
+
`--build=BUILD-SYSTEM'
`--host=HOST-SYSTEM'
These options are for cross-compiling. If you specify both
Index: glibc-2.17/config.h.in
===================================================================
--- glibc-2.17.orig/config.h.in
+++ glibc-2.17/config.h.in
@@ -232,4 +232,7 @@
/* The ARM hard-float ABI is being used. */
#undef HAVE_ARM_PCS_VFP
+/* The pt_chown binary is being built and used by grantpt. */
+#undef HAVE_PT_CHOWN
+
#endif
Index: glibc-2.17/config.make.in
===================================================================
--- glibc-2.17.orig/config.make.in
+++ glibc-2.17/config.make.in
@@ -102,6 +102,7 @@ force-install = @force_install@
link-obsolete-rpc = @link_obsolete_rpc@
build-nscd = @build_nscd@
use-nscd = @use_nscd@
+build-pt-chown = @build_pt_chown@
# Build tools.
CC = @CC@
Index: glibc-2.17/configure
===================================================================
--- glibc-2.17.orig/configure
+++ glibc-2.17/configure
@@ -654,6 +654,7 @@ multi_arch
base_machine
add_on_subdirs
add_ons
+build_pt_chown
build_nscd
link_obsolete_rpc
libc_cv_nss_crypt
@@ -760,6 +761,7 @@ enable_obsolete_rpc
enable_systemtap
enable_build_nscd
enable_nscd
+enable_pt_chown
with_cpu
'
ac_precious_vars='build_alias
@@ -1420,6 +1422,7 @@ Optional Features:
--enable-systemtap enable systemtap static probe points [default=no]
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
+ --enable-pt_chown Enable building and installing pt_chown
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3935,6 +3938,19 @@ else
fi
+# Check whether --enable-pt_chown was given.
+if test "${enable_pt_chown+set}" = set; then :
+ enableval=$enable_pt_chown; build_pt_chown=$enableval
+else
+ build_pt_chown=no
+fi
+
+
+if test $build_pt_chown = yes; then
+ $as_echo "#define HAVE_PT_CHOWN 1" >>confdefs.h
+
+fi
+
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
Index: glibc-2.17/configure.in
===================================================================
--- glibc-2.17.orig/configure.in
+++ glibc-2.17/configure.in
@@ -315,6 +315,16 @@ AC_ARG_ENABLE([nscd],
[use_nscd=$enableval],
[use_nscd=yes])
+AC_ARG_ENABLE([pt_chown],
+ [AS_HELP_STRING([--enable-pt_chown],
+ [Enable building and installing pt_chown])],
+ [build_pt_chown=$enableval],
+ [build_pt_chown=no])
+AC_SUBST(build_pt_chown)
+if test $build_pt_chown = yes; then
+ AC_DEFINE(HAVE_PT_CHOWN)
+fi
+
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
Index: glibc-2.17/login/Makefile
===================================================================
--- glibc-2.17.orig/login/Makefile
+++ glibc-2.17/login/Makefile
@@ -29,9 +29,15 @@ routines := getutent getutent_r getutid
CFLAGS-grantpt.c = -DLIBEXECDIR='"$(libexecdir)"'
-others = utmpdump pt_chown
+others = utmpdump
+
+include ../Makeconfig
+
+ifeq (yes,$(build-pt-chown))
+others += pt_chown
others-pie = pt_chown
install-others-programs = $(inst_libexecdir)/pt_chown
+endif
subdir-dirs = programs
vpath %.c programs
Index: glibc-2.17/manual/install.texi
===================================================================
--- glibc-2.17.orig/manual/install.texi
+++ glibc-2.17/manual/install.texi
@@ -155,6 +155,20 @@ if the used tools support it. By using
prevented though there generally is no reason since it creates
compatibility problems.
+@pindex pt_chown
+@findex grantpt
+@item --enable-pt_chown
+The file @file{pt_chown} is a helper binary for @code{grantpt}
+(@pxref{Allocation, Pseudo-Terminals}) that is installed setuid root to
+fix up pseudo-terminal ownership. It is not built by default because
+systems using the Linux kernel are commonly built with the @code{devpts}
+filesystem enabled and mounted at @file{/dev/pts}, which manages
+pseudo-terminal ownership automatically. By using
+@samp{--enable-pt_chown}, you may build @file{pt_chown} and install it
+setuid and owned by @code{root}. The use of @file{pt_chown} introduces
+additional security risks to the system and you should enable it only if
+you understand and accept those risks.
+
@item --build=@var{build-system}
@itemx --host=@var{host-system}
These options are for cross-compiling. If you specify both options and
Index: glibc-2.17/sysdeps/unix/grantpt.c
===================================================================
--- glibc-2.17.orig/sysdeps/unix/grantpt.c
+++ glibc-2.17/sysdeps/unix/grantpt.c
@@ -173,9 +173,10 @@ grantpt (int fd)
retval = 0;
goto cleanup;
- /* We have to use the helper program. */
+ /* We have to use the helper program if it is available. */
helper:;
+#ifdef HAVE_PT_CHOWN
pid_t pid = __fork ();
if (pid == -1)
goto cleanup;
@@ -190,9 +191,9 @@ grantpt (int fd)
if (__dup2 (fd, PTY_FILENO) < 0)
_exit (FAIL_EBADF);
-#ifdef CLOSE_ALL_FDS
+# ifdef CLOSE_ALL_FDS
CLOSE_ALL_FDS ();
-#endif
+# endif
execle (_PATH_PT_CHOWN, basename (_PATH_PT_CHOWN), NULL, NULL);
_exit (FAIL_EXEC);
@@ -231,6 +232,7 @@ grantpt (int fd)
assert(! "getpt: internal error: invalid exit code from pt_chown");
}
}
+#endif
cleanup:
if (buf != _buf)
Index: glibc-2.17/sysdeps/unix/sysv/linux/grantpt.c
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/grantpt.c
+++ glibc-2.17/sysdeps/unix/sysv/linux/grantpt.c
@@ -11,7 +11,7 @@
#include "pty-private.h"
-
+#if HAVE_PT_CHOWN
/* Close all file descriptors except the one specified. */
static void
close_all_fds (void)
@@ -38,6 +38,7 @@ close_all_fds (void)
__dup2 (STDOUT_FILENO, STDERR_FILENO);
}
}
-#define CLOSE_ALL_FDS() close_all_fds()
+# define CLOSE_ALL_FDS() close_all_fds()
+#endif
#include <sysdeps/unix/grantpt.c>

View File

@ -1,8 +1,8 @@
Index: glibc-2.16.90/sysdeps/posix/getaddrinfo.c
Index: glibc-2.17.90/sysdeps/posix/getaddrinfo.c
===================================================================
--- glibc-2.16.90.orig/sysdeps/posix/getaddrinfo.c 2012-11-20 03:45:45.000000000 +0100
+++ glibc-2.16.90/sysdeps/posix/getaddrinfo.c 2012-11-23 15:32:33.000000000 +0100
@@ -269,7 +269,7 @@ extern service_user *__nss_hosts_databas
--- glibc-2.17.90.orig/sysdeps/posix/getaddrinfo.c
+++ glibc-2.17.90/sysdeps/posix/getaddrinfo.c
@@ -270,7 +270,7 @@ extern service_user *__nss_hosts_databas
static int
gaih_inet (const char *name, const struct gaih_service *service,
const struct addrinfo *req, struct addrinfo **pai,
@ -11,7 +11,7 @@ Index: glibc-2.16.90/sysdeps/posix/getaddrinfo.c
{
const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -839,7 +839,10 @@ gaih_inet (const char *name, const struc
@@ -840,7 +840,10 @@ gaih_inet (const char *name, const struc
if (req->ai_family == PF_UNSPEC)
fct4 = __nss_lookup_function (nip, "gethostbyname4_r");
@ -23,7 +23,7 @@ Index: glibc-2.16.90/sysdeps/posix/getaddrinfo.c
{
int herrno;
@@ -942,7 +945,7 @@ gaih_inet (const char *name, const struc
@@ -943,7 +946,7 @@ gaih_inet (const char *name, const struc
if (fct != NULL)
{
if (req->ai_family == AF_INET6
@ -32,7 +32,7 @@ Index: glibc-2.16.90/sysdeps/posix/getaddrinfo.c
{
gethosts (AF_INET6, struct in6_addr);
no_inet6_data = no_data;
@@ -2462,7 +2465,11 @@ getaddrinfo (const char *name, const cha
@@ -2471,7 +2474,11 @@ getaddrinfo (const char *name, const cha
if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
|| hints->ai_family == AF_INET6)
{

View File

@ -1,62 +0,0 @@
From 1cef1b19089528db11f221e938f60b9b048945d7 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Thu, 21 Mar 2013 15:50:27 +0100
Subject: [PATCH] Fix stack overflow in getaddrinfo with many results
[BZ #15330]
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Allocate results and
order arrays from heap if bigger than alloca cutoff.
---
ChangeLog | 6 ++++++
NEWS | 5 ++++-
sysdeps/posix/getaddrinfo.c | 23 +++++++++++++++++++++--
3 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index d95c2d1..2309281 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -2489,11 +2489,27 @@ getaddrinfo (const char *name, const char *service,
__typeof (once) old_once = once;
__libc_once (once, gaiconf_init);
/* Sort results according to RFC 3484. */
- struct sort_result results[nresults];
- size_t order[nresults];
+ struct sort_result *results;
+ size_t *order;
struct addrinfo *q;
struct addrinfo *last = NULL;
char *canonname = NULL;
+ bool malloc_results;
+
+ malloc_results
+ = !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+ if (malloc_results)
+ {
+ results = malloc (nresults * (sizeof (*results) + sizeof (size_t)));
+ if (results == NULL)
+ {
+ __free_in6ai (in6ai);
+ return EAI_MEMORY;
+ }
+ }
+ else
+ results = alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+ order = (size_t *) (results + nresults);
/* Now we definitely need the interface information. */
if (! check_pf_called)
@@ -2664,6 +2680,9 @@ getaddrinfo (const char *name, const char *service,
/* Fill in the canonical name into the new first entry. */
p->ai_canonname = canonname;
+
+ if (malloc_results)
+ free (results);
}
__free_in6ai (in6ai);
--
1.8.2.3

View File

@ -1,23 +1,22 @@
Index: glibc-2.17/Versions.def
Index: glibc-2.17.90/Versions.def
===================================================================
--- glibc-2.17.orig/Versions.def
+++ glibc-2.17/Versions.def
@@ -42,6 +42,10 @@ libc {
}
--- glibc-2.17.90.orig/Versions.def
+++ glibc-2.17.90/Versions.def
@@ -44,6 +44,9 @@ libc {
libcrypt {
GLIBC_2.0
+ OW_CRYPT_1.0
+}
}
+libowcrypt {
+ OW_CRYPT_1.0
}
+}
libdl {
GLIBC_2.0
Index: glibc-2.17/crypt/Makefile
GLIBC_2.1
Index: glibc-2.17.90/crypt/Makefile
===================================================================
--- glibc-2.17.orig/crypt/Makefile
+++ glibc-2.17/crypt/Makefile
@@ -21,14 +21,19 @@
--- glibc-2.17.90.orig/crypt/Makefile
+++ glibc-2.17.90/crypt/Makefile
@@ -21,14 +21,18 @@
subdir := crypt
headers := crypt.h
@ -31,40 +30,30 @@ Index: glibc-2.17/crypt/Makefile
crypt_util
-tests := cert md5c-test sha256c-test sha512c-test badsalttest
+libcrypt-routines += crypt_blowfish x86 wrapper crypt_gensalt compat-gensalt
+libcrypt-shared-only-routines = crypt_gensalt compat-gensalt
+libcrypt-routines += crypt_blowfish x86 wrapper
+libowcrypt-routines := crypt_gensalt wrapper-gensalt
+
+tests := cert md5c-test sha256c-test sha512c-test
include ../Makeconfig
@@ -77,3 +82,4 @@ endif
# This ensures they will load libc.so for needed symbols if loaded by
# a statically-linked program that hasn't already loaded it.
$(objpfx)libcrypt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+$(objpfx)libowcrypt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
Index: glibc-2.17/crypt/Versions
Index: glibc-2.17.90/crypt/Versions
===================================================================
--- glibc-2.17.orig/crypt/Versions
+++ glibc-2.17/crypt/Versions
@@ -2,4 +2,12 @@ libcrypt {
GLIBC_2.0 {
--- glibc-2.17.90.orig/crypt/Versions
+++ glibc-2.17.90/crypt/Versions
@@ -3,3 +3,8 @@ libcrypt {
crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r;
}
+ OW_CRYPT_1.0 {
+ crypt_gensalt; crypt_gensalt_rn; crypt_gensalt_ra;
+ }
+}
}
+libowcrypt {
+ OW_CRYPT_1.0 {
+ crypt_gensalt; crypt_gensalt_rn; crypt_gensalt_ra;
+ }
}
Index: glibc-2.17/crypt/crypt-entry.c
+}
Index: glibc-2.17.90/crypt/crypt-entry.c
===================================================================
--- glibc-2.17.orig/crypt/crypt-entry.c
+++ glibc-2.17/crypt/crypt-entry.c
--- glibc-2.17.90.orig/crypt/crypt-entry.c
+++ glibc-2.17.90/crypt/crypt-entry.c
@@ -81,7 +81,7 @@ extern struct crypt_data _ufc_foobar;
*/
@ -87,309 +76,140 @@ Index: glibc-2.17/crypt/crypt-entry.c
}
#endif
+#endif
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.17
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/alpha/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/alpha/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/arm/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.4
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/ia64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/ia64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.4
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libcrypt.abilist
@@ -9,3 +9,8 @@ GLIBC_2.0
setkey_r F
_gp_disp
_gp_disp A
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.12
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.12
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.12
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist
Index: glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist
+++ glibc-2.17.90/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/shlib-versions
Index: glibc-2.17.90/shlib-versions
===================================================================
--- glibc-2.17.orig/shlib-versions
+++ glibc-2.17/shlib-versions
--- glibc-2.17.90.orig/shlib-versions
+++ glibc-2.17.90/shlib-versions
@@ -92,6 +92,7 @@ sh.*-.*-linux.* ld=ld-linux.so.2 GLIBC_
# This defines the shared library version numbers we will install.
@ -398,230 +218,100 @@ Index: glibc-2.17/shlib-versions
# The gross patch for programs assuming broken locale implementations.
sh.*-.*-.* libBrokenLocale=1 GLIBC_2.2
Index: glibc-2.17/sysdeps/unix/sysv/linux/i386/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/i386/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/i386/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.3
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.2
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sh/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/sh/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/sh/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.0
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/x86_64/64/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/x86_64/64/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/64/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.2.5
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist
===================================================================
--- glibc-2.17.orig/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist
@@ -7,3 +7,8 @@ GLIBC_2.16
fcrypt F
setkey F
setkey_r F
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A
+ crypt_gensalt F
+ crypt_gensalt_ra F
+ crypt_gensalt_rn F
Index: glibc-2.17/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist
===================================================================
--- /dev/null
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist
@@ -0,0 +1,5 @@
+OW_CRYPT_1.0
+ OW_CRYPT_1.0 A

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d0ad63189c3d0799ee671b0b565f8d113c43d1759894c9002ba58bf212af8abf
size 11173392

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5a58b32a88c982b0eebdaca9a0b8c14441ebbb15174b10f69a98f82eb849ce73
size 11780928

View File

@ -2,11 +2,11 @@ For details see:
http://sourceware.org/bugzilla/show_bug.cgi?id=5379
Index: glibc-2.15/sunrpc/clnt_udp.c
Index: glibc-2.17.90/sunrpc/clnt_udp.c
===================================================================
--- glibc-2.15.orig/sunrpc/clnt_udp.c
+++ glibc-2.15/sunrpc/clnt_udp.c
@@ -307,6 +307,7 @@ clntudp_call (cl, proc, xargs, argsp, xr
--- glibc-2.17.90.orig/sunrpc/clnt_udp.c
+++ glibc-2.17.90/sunrpc/clnt_udp.c
@@ -308,6 +308,7 @@ clntudp_call (cl, proc, xargs, argsp, xr
XDR *xdrs;
int outlen = 0;
int inlen;
@ -14,7 +14,7 @@ Index: glibc-2.15/sunrpc/clnt_udp.c
socklen_t fromlen;
struct pollfd fd;
int milliseconds = (cu->cu_wait.tv_sec * 1000) +
@@ -377,37 +378,36 @@ send_again:
@@ -378,37 +379,36 @@ send_again:
anyup = 0;
for (;;)
{

View File

@ -3,10 +3,10 @@ Wed Jun 4 14:29:07 CEST 2003 - kukuk@suse.de
- Make --no-archive default for localedef
Index: glibc-2.15.90/locale/programs/localedef.c
Index: glibc-2.17.90/locale/programs/localedef.c
===================================================================
--- glibc-2.15.90.orig/locale/programs/localedef.c
+++ glibc-2.15.90/locale/programs/localedef.c
--- glibc-2.17.90.orig/locale/programs/localedef.c
+++ glibc-2.17.90/locale/programs/localedef.c
@@ -81,7 +81,7 @@ const char *alias_file;
static struct localedef_t *locales;
@ -24,7 +24,7 @@ Index: glibc-2.15.90/locale/programs/localedef.c
/* Definitions of arguments for argp functions. */
static const struct argp_option options[] =
@@ -133,6 +134,8 @@ static const struct argp_option options[
@@ -134,6 +135,8 @@ static const struct argp_option options[
N_("Suppress warnings and information messages") },
{ "verbose", 'v', NULL, 0, N_("Print more messages") },
{ NULL, 0, NULL, 0, N_("Archive control:") },
@ -33,7 +33,7 @@ Index: glibc-2.15.90/locale/programs/localedef.c
{ "no-archive", OPT_NO_ARCHIVE, NULL, 0,
N_("Don't add new data to archive") },
{ "add-to-archive", OPT_ADD_TO_ARCHIVE, NULL, 0,
@@ -310,6 +313,9 @@ parse_opt (int key, char *arg, struct ar
@@ -311,6 +314,9 @@ parse_opt (int key, char *arg, struct ar
case OPT_PREFIX:
output_prefix = arg;
break;

View File

@ -2,10 +2,10 @@
* nscd/nscd.h: Move persistent storage back to /var/run/nscd
Index: glibc-2.15.90/nscd/nscd.h
Index: glibc-2.17.90/nscd/nscd.h
===================================================================
--- glibc-2.15.90.orig/nscd/nscd.h
+++ glibc-2.15.90/nscd/nscd.h
--- glibc-2.17.90.orig/nscd/nscd.h
+++ glibc-2.17.90/nscd/nscd.h
@@ -112,11 +112,11 @@ struct database_dyn

View File

@ -1,8 +1,8 @@
Index: glibc-2.15.90/intl/loadmsgcat.c
Index: glibc-2.17.90/intl/loadmsgcat.c
===================================================================
--- glibc-2.15.90.orig/intl/loadmsgcat.c
+++ glibc-2.15.90/intl/loadmsgcat.c
@@ -805,8 +805,52 @@ _nl_load_domain (domain_file, domainbind
--- glibc-2.17.90.orig/intl/loadmsgcat.c
+++ glibc-2.17.90/intl/loadmsgcat.c
@@ -806,8 +806,52 @@ _nl_load_domain (domain_file, domainbind
if (domain_file->filename == NULL)
goto out;

View File

@ -1,7 +1,7 @@
Index: glibc-2.16.90/elf/rtld.c
Index: glibc-2.17.90/elf/rtld.c
===================================================================
--- glibc-2.16.90.orig/elf/rtld.c
+++ glibc-2.16.90/elf/rtld.c
--- glibc-2.17.90.orig/elf/rtld.c
+++ glibc-2.17.90/elf/rtld.c
@@ -1717,6 +1717,53 @@ ERROR: ld.so: object '%s' cannot be load
}
}

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fe966fc1d1082da024fda16d4ad1e8e2b73f30d646701d24a27882ec653b5807
size 329247
oid sha256:10f1db566a96ef0e012c79fc18844593f56424a1e5a7d1b3f6521b2fdc1753e9
size 329284

View File

@ -1,7 +1,7 @@
Index: glibc-2.15/localedata/locales/zh_TW
Index: glibc-2.17.90/localedata/locales/zh_TW
===================================================================
--- glibc-2.15.orig/localedata/locales/zh_TW
+++ glibc-2.15/localedata/locales/zh_TW
--- glibc-2.17.90.orig/localedata/locales/zh_TW
+++ glibc-2.17.90/localedata/locales/zh_TW
@@ -1,7 +1,7 @@
comment_char %
escape_char /

View File

@ -1,7 +1,7 @@
Index: glibc-2.15.90/intl/locale.alias
Index: glibc-2.17.90/intl/locale.alias
===================================================================
--- glibc-2.15.90.orig/intl/locale.alias
+++ glibc-2.15.90/intl/locale.alias
--- glibc-2.17.90.orig/intl/locale.alias
+++ glibc-2.17.90/intl/locale.alias
@@ -56,8 +56,6 @@ korean ko_KR.eucKR
korean.euc ko_KR.eucKR
ko_KR ko_KR.eucKR
@ -11,10 +11,23 @@ Index: glibc-2.15.90/intl/locale.alias
norwegian nb_NO.ISO-8859-1
nynorsk nn_NO.ISO-8859-1
polish pl_PL.ISO-8859-2
Index: glibc-2.15.90/localedata/locales/no_NO
Index: glibc-2.17.90/localedata/SUPPORTED
===================================================================
--- glibc-2.17.90.orig/localedata/SUPPORTED
+++ glibc-2.17.90/localedata/SUPPORTED
@@ -324,6 +324,8 @@ nl_NL/ISO-8859-1 \
nl_NL@euro/ISO-8859-15 \
nn_NO.UTF-8/UTF-8 \
nn_NO/ISO-8859-1 \
+no_NO.UTF-8/UTF-8 \
+no_NO/ISO-8859-1 \
nr_ZA/UTF-8 \
nso_ZA/UTF-8 \
oc_FR.UTF-8/UTF-8 \
Index: glibc-2.17.90/localedata/locales/no_NO
===================================================================
--- /dev/null
+++ glibc-2.15.90/localedata/locales/no_NO
+++ glibc-2.17.90/localedata/locales/no_NO
@@ -0,0 +1,69 @@
+escape_char /
+comment_char %
@ -85,16 +98,3 @@ Index: glibc-2.15.90/localedata/locales/no_NO
+LC_ADDRESS
+copy "nb_NO"
+END LC_ADDRESS
Index: glibc-2.15.90/localedata/SUPPORTED
===================================================================
--- glibc-2.15.90.orig/localedata/SUPPORTED
+++ glibc-2.15.90/localedata/SUPPORTED
@@ -317,6 +317,8 @@ nl_NL/ISO-8859-1 \
nl_NL@euro/ISO-8859-15 \
nn_NO.UTF-8/UTF-8 \
nn_NO/ISO-8859-1 \
+no_NO.UTF-8/UTF-8 \
+no_NO/ISO-8859-1 \
nr_ZA/UTF-8 \
nso_ZA/UTF-8 \
oc_FR.UTF-8/UTF-8 \

View File

@ -1,7 +1,7 @@
Index: glibc-2.15/locale/iso-4217.def
Index: glibc-2.17.90/locale/iso-4217.def
===================================================================
--- glibc-2.15.orig/locale/iso-4217.def
+++ glibc-2.15/locale/iso-4217.def
--- glibc-2.17.90.orig/locale/iso-4217.def
+++ glibc-2.17.90/locale/iso-4217.def
@@ -8,6 +8,7 @@
*
* !!! The list has to be sorted !!!

View File

@ -1,49 +0,0 @@
libc:cbc105f8b590fa5f5343160ef0a33dde6366c427
2013-03-14 Andreas Schwab <schwab@suse.de>
* sysdeps/unix/sysv/linux/aarch64/configure.in: Set
libc_cv_slibdir, libdir and libc_cv_localedir.
* sysdeps/unix/sysv/linux/aarch64/configure: Regenerate.
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/configure b/ports/sysdeps/unix/sysv/linux/aarch64/configure
index 5a22126..04b6c81 100644
--- a/ports/sysdeps/unix/sysv/linux/aarch64/configure
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/configure
@@ -1,3 +1,16 @@
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/aarch64.
arch_minimum_kernel=3.7.0
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+ /usr | /usr/)
+ libc_cv_slibdir="/lib64"
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir='${exec_prefix}/lib64';
+ # Locale data can be shared between 32bit and 64bit libraries
+ libc_cv_localedir='${exec_prefix}/lib/locale'
+ fi
+ ;;
+esac
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/configure.in b/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
index d1995d4..6596a15 100644
--- a/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
@@ -2,3 +2,15 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/unix/sysv/linux/aarch64.
arch_minimum_kernel=3.7.0
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+ /usr | /usr/)
+ libc_cv_slibdir="/lib64"
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir='${exec_prefix}/lib64';
+ # Locale data can be shared between 32bit and 64bit libraries
+ libc_cv_localedir='${exec_prefix}/lib/locale'
+ fi
+ ;;
+esac

View File

@ -1,7 +1,7 @@
Index: glibc-2.17/sunrpc/bindrsvprt.c
Index: glibc-2.17.90/sunrpc/bindrsvprt.c
===================================================================
--- glibc-2.17.orig/sunrpc/bindrsvprt.c
+++ glibc-2.17/sunrpc/bindrsvprt.c
--- glibc-2.17.90.orig/sunrpc/bindrsvprt.c
+++ glibc-2.17.90/sunrpc/bindrsvprt.c
@@ -29,6 +29,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

View File

@ -1,8 +1,8 @@
Index: glibc-2.15.90/bits/sched.h
Index: glibc-2.17.90/bits/sched.h
===================================================================
--- glibc-2.15.90.orig/bits/sched.h
+++ glibc-2.15.90/bits/sched.h
@@ -53,7 +53,7 @@ struct __sched_param
--- glibc-2.17.90.orig/bits/sched.h
+++ glibc-2.17.90/bits/sched.h
@@ -52,7 +52,7 @@ struct __sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */
@ -11,11 +11,11 @@ Index: glibc-2.15.90/bits/sched.h
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set_t'. */
Index: glibc-2.15.90/sysdeps/unix/sysv/linux/bits/sched.h
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/bits/sched.h
===================================================================
--- glibc-2.15.90.orig/sysdeps/unix/sysv/linux/bits/sched.h
+++ glibc-2.15.90/sysdeps/unix/sysv/linux/bits/sched.h
@@ -112,7 +112,7 @@ struct __sched_param
--- glibc-2.17.90.orig/sysdeps/unix/sysv/linux/bits/sched.h
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/bits/sched.h
@@ -111,7 +111,7 @@ struct __sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */

View File

@ -7,10 +7,10 @@ Remapping ::1 to 127.0.0.1 is bogus when /etc/hosts is correct.
bnc #684534, #606980
http://sources.redhat.com/bugzilla/show_bug.cgi?id=4980
Index: glibc-2.15.90/nss/nss_files/files-hosts.c
Index: glibc-2.17.90/nss/nss_files/files-hosts.c
===================================================================
--- glibc-2.15.90.orig/nss/nss_files/files-hosts.c
+++ glibc-2.15.90/nss/nss_files/files-hosts.c
--- glibc-2.17.90.orig/nss/nss_files/files-hosts.c
+++ glibc-2.17.90/nss/nss_files/files-hosts.c
@@ -68,11 +68,6 @@ LINE_PARSER
{
if (IN6_IS_ADDR_V4MAPPED (entdata->host_addr))

View File

@ -1,7 +1,22 @@
Index: glibc-2.15.90/nscd/nscd_stat.c
Index: glibc-2.17.90/csu/Makefile
===================================================================
--- glibc-2.15.90.orig/nscd/nscd_stat.c
+++ glibc-2.15.90/nscd/nscd_stat.c
--- glibc-2.17.90.orig/csu/Makefile
+++ glibc-2.17.90/csu/Makefile
@@ -162,8 +162,8 @@ $(objpfx)version-info.h: $(common-objpfx
if [ -z "$$os" ]; then \
os=Linux; \
fi; \
- printf '"Compiled on a %s %s system on %s.\\n"\n' \
- "$$os" "$$version" "`date +%Y-%m-%d`";; \
+ printf '"Compiled on a %s %s system.\\n"\n' \
+ "$$os" "$$version";; \
*) ;; \
esac; \
files="$(all-Banner-files)"; \
Index: glibc-2.17.90/nscd/nscd_stat.c
===================================================================
--- glibc-2.17.90.orig/nscd/nscd_stat.c
+++ glibc-2.17.90/nscd/nscd_stat.c
@@ -36,8 +36,13 @@
#endif /* HAVE_SELINUX */
@ -17,18 +32,3 @@ Index: glibc-2.15.90/nscd/nscd_stat.c
/* Statistic data for one database. */
struct dbstat
Index: glibc-2.15.90/csu/Makefile
===================================================================
--- glibc-2.15.90.orig/csu/Makefile
+++ glibc-2.15.90/csu/Makefile
@@ -171,8 +171,8 @@ $(objpfx)version-info.h: $(common-objpfx
if [ -z "$$os" ]; then \
os=Linux; \
fi; \
- printf '"Compiled on a %s %s system on %s.\\n"\n' \
- "$$os" "$$version" "`date +%Y-%m-%d`";; \
+ printf '"Compiled on a %s %s system.\\n"\n' \
+ "$$os" "$$version";; \
*) ;; \
esac; \
files="$(all-Banner-files)"; \

View File

@ -1,10 +1,10 @@
See:
http://sourceware.org/bugzilla/show_bug.cgi?id=11928
Index: glibc-2.15.90/nscd/aicache.c
Index: glibc-2.17.90/nscd/aicache.c
===================================================================
--- glibc-2.15.90.orig/nscd/aicache.c
+++ glibc-2.15.90/nscd/aicache.c
--- glibc-2.17.90.orig/nscd/aicache.c
+++ glibc-2.17.90/nscd/aicache.c
@@ -25,6 +25,7 @@
#include <time.h>
#include <unistd.h>
@ -22,11 +22,11 @@ Index: glibc-2.15.90/nscd/aicache.c
/* If we are looking for both IPv4 and IPv6 address we don't want
the lookup functions to automatically promote IPv4 addresses to
Index: glibc-2.15.90/resolv/res_hconf.c
Index: glibc-2.17.90/resolv/res_hconf.c
===================================================================
--- glibc-2.15.90.orig/resolv/res_hconf.c
+++ glibc-2.15.90/resolv/res_hconf.c
@@ -82,7 +82,9 @@ static const struct cmd
--- glibc-2.17.90.orig/resolv/res_hconf.c
+++ glibc-2.17.90/resolv/res_hconf.c
@@ -81,7 +81,9 @@ static const struct cmd
};
/* Structure containing the state. */

View File

@ -1,7 +1,7 @@
Index: glibc-2.15/nscd/nscd.conf
Index: glibc-2.17.90/nscd/nscd.conf
===================================================================
--- glibc-2.15.orig/nscd/nscd.conf
+++ glibc-2.15/nscd/nscd.conf
--- glibc-2.17.90.orig/nscd/nscd.conf
+++ glibc-2.17.90/nscd/nscd.conf
@@ -61,11 +61,11 @@
auto-propagate group yes

View File

@ -1,8 +1,8 @@
Index: glibc-2.15.90/resolv/res_hconf.c
Index: glibc-2.17.90/resolv/res_hconf.c
===================================================================
--- glibc-2.15.90.orig/resolv/res_hconf.c
+++ glibc-2.15.90/resolv/res_hconf.c
@@ -241,9 +241,12 @@ parse_line (const char *fname, int line_
--- glibc-2.17.90.orig/resolv/res_hconf.c
+++ glibc-2.17.90/resolv/res_hconf.c
@@ -240,9 +240,12 @@ parse_line (const char *fname, int line_
if (c == NULL)
{
char *buf;

View File

@ -72,10 +72,10 @@ Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="glibc-2.5-resolvconf.patch"
Index: glibc-2.15/resolv/res_libc.c
Index: glibc-2.17.90/resolv/res_libc.c
===================================================================
--- glibc-2.15.orig/resolv/res_libc.c
+++ glibc-2.15/resolv/res_libc.c
--- glibc-2.17.90.orig/resolv/res_libc.c
+++ glibc-2.17.90/resolv/res_libc.c
@@ -22,7 +22,7 @@
#include <arpa/nameser.h>
#include <resolv.h>

View File

@ -1,3 +1,60 @@
-------------------------------------------------------------------
Tue Aug 6 09:20:04 UTC 2013 - schwab@suse.de
- Update to glibc 2.17.90 85891acadf1b:
* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
has been fixed by disabling the use of pt_chown (Bugzilla #15755).
Distributions can re-enable building and using pt_chown via the new configure
option `--enable-pt_chown'. Enabling the use of pt_chown carries with it
considerable security risks and should only be used if the distribution
understands and accepts the risks.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
fixed (Bugzilla #15330).
* Add support for calling C++11 thread_local object destructors on thread
and program exit. This needs compiler support for offloading C++11
destructor calls to glibc.
* Improved worst case performance of libm functions with double inputs and
output.
* Support for priority inherited mutexes in pthread condition variables on
non-x86 architectures.
* Optimized string functions for AArch64. Implemented by Marcus Shawcroft.
* Optimized string functions for ARM. Implemented by Will Newton and
Richard Henderson.
* Added a benchmark framework to track performance of functions in glibc.
* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
* On Linux, the clock function now uses the clock_gettime system call
for improved precision, rather than old times system call.
* Added new API functions pthread_getattr_default_np and
pthread_setattr_default_np to get and set the default pthread
attributes of a process.
* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
This may improve lock scaling of existing programs on TSX capable systems.
* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
availability). Implemented by Ryan S. Arnold.
* Support added for POWER8 platform. Implemented by Ryan S. Arnold.
- Remove upstreamed patches:
pthread-cond-timedwait-i486.patch
glibc-aarch64-lib64.patch
arm-ld-so-cache.patch
rtlddir.patch
regexp-overrun.patch
getaddrinfo-overflow.patch
nscd-netgroup.patch
disable-pt-chown.patch
nscd-short-write.patch
big5-hkscs-update.patch.bz2
digits-dots.patch
strptime-W-week.patch
aarch64-sigsetjmp.patch
- Rediff all remaining patches
- Reenable stackguard randomization on arm
- Recognize ppc64p7 arch to build for power7
- Remove all ABI extensions from libcrypt
- cbrtl-ldbl-96.patch: fix cbrtl for ldbl-96
-------------------------------------------------------------------
Wed Jul 31 12:20:38 UTC 2013 - schwab@suse.de

View File

@ -1,9 +1,9 @@
test-lfs runs for ever on ReiserFS. Let's disable it completely.
Index: glibc-2.15.90/io/Makefile
Index: glibc-2.17.90/io/Makefile
===================================================================
--- glibc-2.15.90.orig/io/Makefile
+++ glibc-2.15.90/io/Makefile
--- glibc-2.17.90.orig/io/Makefile
+++ glibc-2.17.90/io/Makefile
@@ -63,7 +63,7 @@ static-only-routines = stat fstat lstat
others := pwd

View File

@ -106,10 +106,10 @@ BuildRequires: gd-devel
# 2.6.16 is the SLES 10 kernel, use this as oldest supported kernel
%define enablekernel 2.6.16
%endif
Version: 2.17
Version: 2.17.90
Release: 0
%define glibc_major_version 2.17
%define git_id c758a6861537
%define glibc_major_version 2.17.90
%define git_id 85891acadf1b
Url: http://www.gnu.org/software/libc/libc.html
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-%{git_id}.tar.xz
@ -239,48 +239,24 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Extend i486 pthread_cond_timedwait to use futex syscall with absolute timeout
Patch1000: pthread-cond-timedwait-i486.patch
# PATCH-FIX-UPSTREAM Use lib64 for aarch64
Patch1001: glibc-aarch64-lib64.patch
# PATCH-FIX-UPSTREAM ARM: Support loading unmarked objects from cache
Patch1002: arm-ld-so-cache.patch
# PATCH-FIX-UPSTREAM Add support for rtld directory different from slib directory
Patch1003: rtlddir.patch
# PATCH-FIX-UPSTREAM Fix buffer overrun in regexp matcher
Patch1004: regexp-overrun.patch
# PATCH-FIX-UPSTREAM Fix stack overflow in getaddrinfo with many results
Patch1005: getaddrinfo-overflow.patch
# PATCH-FIX-UPSTREAM Fix handling of netgroup cache in nscd
Patch1006: nscd-netgroup.patch
# PATCH-FIX-UPSTREAM Disable use of pt_chown (CVE-2013-2207)
Patch1007: disable-pt-chown.patch
###
# Patches awaiting upstream approval
###
# PATCH-FIX-UPSTREAM Fix LD_PROFILE (glibc bug#13818) - aj@suse.de
Patch2008: glibc-ld-profile.patch
# PATCH-FIX-UPSTREAM Properly check for short writes when sending the response in nscd
Patch2010: nscd-short-write.patch
# PATCH-FIX-UPSTREAM Update BIG5-HKSCS charmap to HKSCS-2008
Patch2011: big5-hkscs-update.patch.bz2
# PATCH-FIX-UPSTREAM Fix parsing of numeric hosts in gethostbyname_r
Patch2012: digits-dots.patch
# PATCH-FIX-UPSTREAM Properly cache the result from looking up the nss database config
Patch2013: nss-database.patch
# PATCH-FIX-UPSTREAM Properly handle %W in strptime
Patch2014: strptime-W-week.patch
# PATCH-FIX-UPSTREAM Revert problematic fixes for [BZ #11741]
Patch2015: printf-overrun.patch
# PATCH-FIX-UPSTREAM AArch64: Don't clobber argument for tail call to __sigjmp_save in sigsetjmp
Patch2016: aarch64-sigsetjmp.patch
# PATCH-FIX-UPSTREAM Fix strcasecmp for tr_TR.ISO-8859-9
Patch2017: nonascii-case.patch
# PATCH-FIX-UPSTREAM Fix fallback in i686 strcasecmp/strncasecmp
Patch2018: i686-strcasecmp-fallback.patch
# PATCH-FIX-UPSTREAM Fix pldd not to leave process stopped after detaching
Patch2019: pldd-wait-ptrace-stop.patch
# PATCH-FIX-UPSTREAM Fix cbrtl for ldbl-96
Patch2020: cbrtl-ldbl-96.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -481,27 +457,14 @@ rm nscd/s-stamp
%patch305 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch1007 -p1
# XXX Disable, it breaks the testsuite, test elf/tst-audit2
# %patch2008 -p1
%patch2010 -p1
%patch2011 -p1
%patch2012 -p1
%patch2013 -p1
%patch2014 -p1
%patch2015 -p1
%patch2016 -p1
%patch2017 -p1
%patch2018 -p1
%patch2019 -p1
%patch2020 -p1
%patch3000
@ -607,7 +570,7 @@ add_ons=",libidn"
%ifarch %arm aarch64 mipsel ia64
add_ons=$add_ons,ports
%endif
%ifarch %arm mipsel
%ifarch mipsel
# fails to build otherwise - need to recheck and fix
%define enable_stackguard_randomization 0
%endif
@ -643,12 +606,16 @@ configure_and_build_glibc() {
%if %{enable_stackguard_randomization}
--enable-stackguard-randomization \
%endif
--enable-lock-elision \
--build=%{target} --host=%{target} \
%ifarch ppc ppc64 %{ix86} x86_64 sparc sparc64 s390 s390x
--enable-multi-arch \
%endif
%ifarch mipsel
--without-fp \
%endif
%ifarch ppc64p7
--with-cpu=power7 \
%endif
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \

View File

@ -1,3 +1,60 @@
-------------------------------------------------------------------
Tue Aug 6 09:20:04 UTC 2013 - schwab@suse.de
- Update to glibc 2.17.90 85891acadf1b:
* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
has been fixed by disabling the use of pt_chown (Bugzilla #15755).
Distributions can re-enable building and using pt_chown via the new configure
option `--enable-pt_chown'. Enabling the use of pt_chown carries with it
considerable security risks and should only be used if the distribution
understands and accepts the risks.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
fixed (Bugzilla #15330).
* Add support for calling C++11 thread_local object destructors on thread
and program exit. This needs compiler support for offloading C++11
destructor calls to glibc.
* Improved worst case performance of libm functions with double inputs and
output.
* Support for priority inherited mutexes in pthread condition variables on
non-x86 architectures.
* Optimized string functions for AArch64. Implemented by Marcus Shawcroft.
* Optimized string functions for ARM. Implemented by Will Newton and
Richard Henderson.
* Added a benchmark framework to track performance of functions in glibc.
* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
* On Linux, the clock function now uses the clock_gettime system call
for improved precision, rather than old times system call.
* Added new API functions pthread_getattr_default_np and
pthread_setattr_default_np to get and set the default pthread
attributes of a process.
* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
This may improve lock scaling of existing programs on TSX capable systems.
* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
availability). Implemented by Ryan S. Arnold.
* Support added for POWER8 platform. Implemented by Ryan S. Arnold.
- Remove upstreamed patches:
pthread-cond-timedwait-i486.patch
glibc-aarch64-lib64.patch
arm-ld-so-cache.patch
rtlddir.patch
regexp-overrun.patch
getaddrinfo-overflow.patch
nscd-netgroup.patch
disable-pt-chown.patch
nscd-short-write.patch
big5-hkscs-update.patch.bz2
digits-dots.patch
strptime-W-week.patch
aarch64-sigsetjmp.patch
- Rediff all remaining patches
- Reenable stackguard randomization on arm
- Recognize ppc64p7 arch to build for power7
- Remove all ABI extensions from libcrypt
- cbrtl-ldbl-96.patch: fix cbrtl for ldbl-96
-------------------------------------------------------------------
Wed Jul 31 12:20:38 UTC 2013 - schwab@suse.de

View File

@ -105,10 +105,10 @@ BuildRequires: gd-devel
# 2.6.16 is the SLES 10 kernel, use this as oldest supported kernel
%define enablekernel 2.6.16
%endif
Version: 2.17
Version: 2.17.90
Release: 0
%define glibc_major_version 2.17
%define git_id c758a6861537
%define glibc_major_version 2.17.90
%define git_id 85891acadf1b
Url: http://www.gnu.org/software/libc/libc.html
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-%{git_id}.tar.xz
@ -238,48 +238,24 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Extend i486 pthread_cond_timedwait to use futex syscall with absolute timeout
Patch1000: pthread-cond-timedwait-i486.patch
# PATCH-FIX-UPSTREAM Use lib64 for aarch64
Patch1001: glibc-aarch64-lib64.patch
# PATCH-FIX-UPSTREAM ARM: Support loading unmarked objects from cache
Patch1002: arm-ld-so-cache.patch
# PATCH-FIX-UPSTREAM Add support for rtld directory different from slib directory
Patch1003: rtlddir.patch
# PATCH-FIX-UPSTREAM Fix buffer overrun in regexp matcher
Patch1004: regexp-overrun.patch
# PATCH-FIX-UPSTREAM Fix stack overflow in getaddrinfo with many results
Patch1005: getaddrinfo-overflow.patch
# PATCH-FIX-UPSTREAM Fix handling of netgroup cache in nscd
Patch1006: nscd-netgroup.patch
# PATCH-FIX-UPSTREAM Disable use of pt_chown (CVE-2013-2207)
Patch1007: disable-pt-chown.patch
###
# Patches awaiting upstream approval
###
# PATCH-FIX-UPSTREAM Fix LD_PROFILE (glibc bug#13818) - aj@suse.de
Patch2008: glibc-ld-profile.patch
# PATCH-FIX-UPSTREAM Properly check for short writes when sending the response in nscd
Patch2010: nscd-short-write.patch
# PATCH-FIX-UPSTREAM Update BIG5-HKSCS charmap to HKSCS-2008
Patch2011: big5-hkscs-update.patch.bz2
# PATCH-FIX-UPSTREAM Fix parsing of numeric hosts in gethostbyname_r
Patch2012: digits-dots.patch
# PATCH-FIX-UPSTREAM Properly cache the result from looking up the nss database config
Patch2013: nss-database.patch
# PATCH-FIX-UPSTREAM Properly handle %W in strptime
Patch2014: strptime-W-week.patch
# PATCH-FIX-UPSTREAM Revert problematic fixes for [BZ #11741]
Patch2015: printf-overrun.patch
# PATCH-FIX-UPSTREAM AArch64: Don't clobber argument for tail call to __sigjmp_save in sigsetjmp
Patch2016: aarch64-sigsetjmp.patch
# PATCH-FIX-UPSTREAM Fix strcasecmp for tr_TR.ISO-8859-9
Patch2017: nonascii-case.patch
# PATCH-FIX-UPSTREAM Fix fallback in i686 strcasecmp/strncasecmp
Patch2018: i686-strcasecmp-fallback.patch
# PATCH-FIX-UPSTREAM Fix pldd not to leave process stopped after detaching
Patch2019: pldd-wait-ptrace-stop.patch
# PATCH-FIX-UPSTREAM Fix cbrtl for ldbl-96
Patch2020: cbrtl-ldbl-96.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -481,27 +457,14 @@ rm nscd/s-stamp
%patch305 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch1007 -p1
# XXX Disable, it breaks the testsuite, test elf/tst-audit2
# %patch2008 -p1
%patch2010 -p1
%patch2011 -p1
%patch2012 -p1
%patch2013 -p1
%patch2014 -p1
%patch2015 -p1
%patch2016 -p1
%patch2017 -p1
%patch2018 -p1
%patch2019 -p1
%patch2020 -p1
%patch3000
@ -607,7 +570,7 @@ add_ons=",libidn"
%ifarch %arm aarch64 mipsel ia64
add_ons=$add_ons,ports
%endif
%ifarch %arm mipsel
%ifarch mipsel
# fails to build otherwise - need to recheck and fix
%define enable_stackguard_randomization 0
%endif
@ -643,12 +606,16 @@ configure_and_build_glibc() {
%if %{enable_stackguard_randomization}
--enable-stackguard-randomization \
%endif
--enable-lock-elision \
--build=%{target} --host=%{target} \
%ifarch ppc ppc64 %{ix86} x86_64 sparc sparc64 s390 s390x
--enable-multi-arch \
%endif
%ifarch mipsel
--without-fp \
%endif
%ifarch ppc64p7
--with-cpu=power7 \
%endif
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \

View File

@ -1,14 +1,14 @@
Index: glibc-2.16.90/csu/version.c
Index: glibc-2.17.90/csu/version.c
===================================================================
--- glibc-2.16.90.orig/csu/version.c
+++ glibc-2.16.90/csu/version.c
--- glibc-2.17.90.orig/csu/version.c
+++ glibc-2.17.90/csu/version.c
@@ -24,11 +24,12 @@ static const char __libc_release[] = REL
static const char __libc_version[] = VERSION;
static const char banner[] =
-"GNU C Library "PKGVERSION RELEASE" release version "VERSION", by Roland McGrath et al.\n\
+"GNU C Library "PKGVERSION RELEASE" release version "VERSION" (git "GITID"), by Roland McGrath et al.\n\
Copyright (C) 2012 Free Software Foundation, Inc.\n\
Copyright (C) 2013 Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions.\n\
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
PARTICULAR PURPOSE.\n\

View File

@ -1,3 +1,60 @@
-------------------------------------------------------------------
Tue Aug 6 09:20:04 UTC 2013 - schwab@suse.de
- Update to glibc 2.17.90 85891acadf1b:
* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
has been fixed by disabling the use of pt_chown (Bugzilla #15755).
Distributions can re-enable building and using pt_chown via the new configure
option `--enable-pt_chown'. Enabling the use of pt_chown carries with it
considerable security risks and should only be used if the distribution
understands and accepts the risks.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
fixed (Bugzilla #15330).
* Add support for calling C++11 thread_local object destructors on thread
and program exit. This needs compiler support for offloading C++11
destructor calls to glibc.
* Improved worst case performance of libm functions with double inputs and
output.
* Support for priority inherited mutexes in pthread condition variables on
non-x86 architectures.
* Optimized string functions for AArch64. Implemented by Marcus Shawcroft.
* Optimized string functions for ARM. Implemented by Will Newton and
Richard Henderson.
* Added a benchmark framework to track performance of functions in glibc.
* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
* On Linux, the clock function now uses the clock_gettime system call
for improved precision, rather than old times system call.
* Added new API functions pthread_getattr_default_np and
pthread_setattr_default_np to get and set the default pthread
attributes of a process.
* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
This may improve lock scaling of existing programs on TSX capable systems.
* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
availability). Implemented by Ryan S. Arnold.
* Support added for POWER8 platform. Implemented by Ryan S. Arnold.
- Remove upstreamed patches:
pthread-cond-timedwait-i486.patch
glibc-aarch64-lib64.patch
arm-ld-so-cache.patch
rtlddir.patch
regexp-overrun.patch
getaddrinfo-overflow.patch
nscd-netgroup.patch
disable-pt-chown.patch
nscd-short-write.patch
big5-hkscs-update.patch.bz2
digits-dots.patch
strptime-W-week.patch
aarch64-sigsetjmp.patch
- Rediff all remaining patches
- Reenable stackguard randomization on arm
- Recognize ppc64p7 arch to build for power7
- Remove all ABI extensions from libcrypt
- cbrtl-ldbl-96.patch: fix cbrtl for ldbl-96
-------------------------------------------------------------------
Wed Jul 31 12:20:38 UTC 2013 - schwab@suse.de

View File

@ -106,10 +106,10 @@ BuildRequires: gd-devel
# 2.6.16 is the SLES 10 kernel, use this as oldest supported kernel
%define enablekernel 2.6.16
%endif
Version: 2.17
Version: 2.17.90
Release: 0
%define glibc_major_version 2.17
%define git_id c758a6861537
%define glibc_major_version 2.17.90
%define git_id 85891acadf1b
Url: http://www.gnu.org/software/libc/libc.html
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-%{git_id}.tar.xz
@ -239,48 +239,24 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Extend i486 pthread_cond_timedwait to use futex syscall with absolute timeout
Patch1000: pthread-cond-timedwait-i486.patch
# PATCH-FIX-UPSTREAM Use lib64 for aarch64
Patch1001: glibc-aarch64-lib64.patch
# PATCH-FIX-UPSTREAM ARM: Support loading unmarked objects from cache
Patch1002: arm-ld-so-cache.patch
# PATCH-FIX-UPSTREAM Add support for rtld directory different from slib directory
Patch1003: rtlddir.patch
# PATCH-FIX-UPSTREAM Fix buffer overrun in regexp matcher
Patch1004: regexp-overrun.patch
# PATCH-FIX-UPSTREAM Fix stack overflow in getaddrinfo with many results
Patch1005: getaddrinfo-overflow.patch
# PATCH-FIX-UPSTREAM Fix handling of netgroup cache in nscd
Patch1006: nscd-netgroup.patch
# PATCH-FIX-UPSTREAM Disable use of pt_chown (CVE-2013-2207)
Patch1007: disable-pt-chown.patch
###
# Patches awaiting upstream approval
###
# PATCH-FIX-UPSTREAM Fix LD_PROFILE (glibc bug#13818) - aj@suse.de
Patch2008: glibc-ld-profile.patch
# PATCH-FIX-UPSTREAM Properly check for short writes when sending the response in nscd
Patch2010: nscd-short-write.patch
# PATCH-FIX-UPSTREAM Update BIG5-HKSCS charmap to HKSCS-2008
Patch2011: big5-hkscs-update.patch.bz2
# PATCH-FIX-UPSTREAM Fix parsing of numeric hosts in gethostbyname_r
Patch2012: digits-dots.patch
# PATCH-FIX-UPSTREAM Properly cache the result from looking up the nss database config
Patch2013: nss-database.patch
# PATCH-FIX-UPSTREAM Properly handle %W in strptime
Patch2014: strptime-W-week.patch
# PATCH-FIX-UPSTREAM Revert problematic fixes for [BZ #11741]
Patch2015: printf-overrun.patch
# PATCH-FIX-UPSTREAM AArch64: Don't clobber argument for tail call to __sigjmp_save in sigsetjmp
Patch2016: aarch64-sigsetjmp.patch
# PATCH-FIX-UPSTREAM Fix strcasecmp for tr_TR.ISO-8859-9
Patch2017: nonascii-case.patch
# PATCH-FIX-UPSTREAM Fix fallback in i686 strcasecmp/strncasecmp
Patch2018: i686-strcasecmp-fallback.patch
# PATCH-FIX-UPSTREAM Fix pldd not to leave process stopped after detaching
Patch2019: pldd-wait-ptrace-stop.patch
# PATCH-FIX-UPSTREAM Fix cbrtl for ldbl-96
Patch2020: cbrtl-ldbl-96.patch
# Non-glibc patches
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
@ -481,27 +457,14 @@ rm nscd/s-stamp
%patch305 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch1007 -p1
# XXX Disable, it breaks the testsuite, test elf/tst-audit2
# %patch2008 -p1
%patch2010 -p1
%patch2011 -p1
%patch2012 -p1
%patch2013 -p1
%patch2014 -p1
%patch2015 -p1
%patch2016 -p1
%patch2017 -p1
%patch2018 -p1
%patch2019 -p1
%patch2020 -p1
%patch3000
@ -607,7 +570,7 @@ add_ons=",libidn"
%ifarch %arm aarch64 mipsel ia64
add_ons=$add_ons,ports
%endif
%ifarch %arm mipsel
%ifarch mipsel
# fails to build otherwise - need to recheck and fix
%define enable_stackguard_randomization 0
%endif
@ -643,12 +606,16 @@ configure_and_build_glibc() {
%if %{enable_stackguard_randomization}
--enable-stackguard-randomization \
%endif
--enable-lock-elision \
--build=%{target} --host=%{target} \
%ifarch ppc ppc64 %{ix86} x86_64 sparc sparc64 s390 s390x
--enable-multi-arch \
%endif
%ifarch mipsel
--without-fp \
%endif
%ifarch ppc64p7
--with-cpu=power7 \
%endif
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \

View File

@ -15,14 +15,14 @@
#include <sys/stat.h>
#include <elf.h>
#define verbose_exec(failcode, fail_ok, path...) \
#define verbose_exec(failcode, path...) \
do \
{ \
char *const arr[] = { path, NULL }; \
vexec (failcode, fail_ok, arr); \
vexec (failcode, arr); \
} while (0)
__attribute__((noinline)) void vexec (int failcode, int fail_ok, char *const path[]);
__attribute__((noinline)) void vexec (int failcode, char *const path[]);
__attribute__((noinline)) void says (const char *str);
__attribute__((noinline)) void sayn (long num);
__attribute__((noinline)) void message (char *const path[]);
@ -116,23 +116,18 @@ main (void)
before running one of the lib's %post scriptlet. /sbin/ldconfig will
then be run by the other arch's %post. */
if (access ("/sbin/ldconfig", X_OK) == 0)
verbose_exec (110, 0, "/sbin/ldconfig", "/sbin/ldconfig", "-X");
verbose_exec (110, "/sbin/ldconfig", "/sbin/ldconfig", "-X");
if (utimes (GCONV_MODULES_DIR "/gconv-modules.cache", NULL) == 0)
{
#ifndef ICONVCONFIG
#define ICONVCONFIG "/usr/sbin/iconvconfig"
#endif
verbose_exec (113, 0, ICONVCONFIG, "/usr/sbin/iconvconfig",
verbose_exec (113, ICONVCONFIG, "/usr/sbin/iconvconfig",
"-o", GCONV_MODULES_DIR"/gconv-modules.cache",
"--nostdlib", GCONV_MODULES_DIR);
}
/* Implement %set_permissions %{_libexecdir}/pt_chown. */
if (access ("/usr/bin/chkstat", X_OK) == 0)
verbose_exec (114, 1, "/usr/bin/chkstat", "/usr/bin/chkstat",
"-n", "--set", "--system", "/usr/lib/pt_chown");
/* Check if telinit is available and the init fifo as well. */
if (access ("/sbin/telinit", X_OK) || access ("/dev/initctl", F_OK))
_exit (0);
@ -147,7 +142,7 @@ main (void)
_exit (0);
if (check_elf ("/proc/1/exe"))
verbose_exec (116, 0, "/sbin/telinit", "/sbin/telinit", "u");
verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u");
#if 0
/* Check if we can safely condrestart sshd. */
@ -156,7 +151,7 @@ main (void)
&& access ("/bin/bash", X_OK) == 0)
{
if (check_elf ("/usr/sbin/sshd"))
verbose_exec (121, 0, "/sbin/service", "/sbin/service", "sshd", "condrestart");
verbose_exec (121, "/sbin/service", "/sbin/service", "sshd", "condrestart");
}
#endif
@ -164,7 +159,7 @@ main (void)
}
void
vexec (int failcode, int fail_ok, char *const path[])
vexec (int failcode, char *const path[])
{
pid_t pid;
int status, save_errno;
@ -200,15 +195,8 @@ vexec (int failcode, int fail_ok, char *const path[])
message (path);
says (" child exited with exit code ");
sayn (WEXITSTATUS (status));
if (fail_ok)
{
says (" (ignored) \n");
}
else
{
says ("\n");
_exit (WEXITSTATUS (status));
}
says ("\n");
_exit (WEXITSTATUS (status));
}
}

View File

@ -4,10 +4,10 @@
* sysdeps/i386/i686/multiarch/strcmp-ssse3.S (__strcasecmp_ssse3)
(__strncasecmp_ssse3) [PIC]: Likewise.
Index: glibc-2.17/sysdeps/i386/i686/multiarch/strcmp-sse4.S
Index: glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-sse4.S
===================================================================
--- glibc-2.17.orig/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+++ glibc-2.17/sysdeps/i386/i686/multiarch/strcmp-sse4.S
--- glibc-2.17.90.orig/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+++ glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-sse4.S
@@ -121,8 +121,14 @@ ENTRY (__strcasecmp_sse4_2)
movl (%eax), %eax
# endif
@ -38,10 +38,10 @@ Index: glibc-2.17/sysdeps/i386/i686/multiarch/strcmp-sse4.S
END (__strncasecmp_sse4_2)
#endif
Index: glibc-2.17/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
Index: glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
===================================================================
--- glibc-2.17.orig/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+++ glibc-2.17/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
--- glibc-2.17.90.orig/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+++ glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
@@ -138,8 +138,14 @@ ENTRY (__strcasecmp_ssse3)
movl (%eax), %eax
# endif

View File

@ -6,10 +6,10 @@
locales.
* string/test-strncasecmp.c (test_main): Likewise.
Index: glibc-2.17/locale/categories.def
Index: glibc-2.17.90/locale/categories.def
===================================================================
--- glibc-2.17.orig/locale/categories.def
+++ glibc-2.17/locale/categories.def
--- glibc-2.17.90.orig/locale/categories.def
+++ glibc-2.17.90/locale/categories.def
@@ -133,6 +133,7 @@ DEFINE_CATEGORY
DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_IGNORE_LEN, "ctype-translit-ignore-len", std, word)
DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_IGNORE, "ctype-translit-ignore", std, string)
@ -18,11 +18,11 @@ Index: glibc-2.17/locale/categories.def
), _nl_postload_ctype)
Index: glibc-2.17/string/Makefile
Index: glibc-2.17.90/string/Makefile
===================================================================
--- glibc-2.17.orig/string/Makefile
+++ glibc-2.17/string/Makefile
@@ -69,6 +69,10 @@ noinl-tester-ENV = LANGUAGE=C
--- glibc-2.17.90.orig/string/Makefile
+++ glibc-2.17.90/string/Makefile
@@ -65,6 +65,10 @@ noinl-tester-ENV = LANGUAGE=C
tst-strxfrm-ENV = LOCPATH=$(common-objpfx)localedata
tst-strxfrm2-ENV = LOCPATH=$(common-objpfx)localedata
bug-strcoll1-ENV = LOCPATH=$(common-objpfx)localedata
@ -33,10 +33,10 @@ Index: glibc-2.17/string/Makefile
CFLAGS-inl-tester.c = -fno-builtin
CFLAGS-noinl-tester.c = -fno-builtin
CFLAGS-tst-strlen.c = -fno-builtin
Index: glibc-2.17/string/test-strcasecmp.c
Index: glibc-2.17.90/string/test-strcasecmp.c
===================================================================
--- glibc-2.17.orig/string/test-strcasecmp.c
+++ glibc-2.17/string/test-strcasecmp.c
--- glibc-2.17.90.orig/string/test-strcasecmp.c
+++ glibc-2.17.90/string/test-strcasecmp.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
@ -45,7 +45,7 @@ Index: glibc-2.17/string/test-strcasecmp.c
#include <ctype.h>
#define TEST_MAIN
#define TEST_NAME "strcasecmp"
@@ -230,14 +231,18 @@ do_random_tests (void)
@@ -206,14 +207,18 @@ do_random_tests (void)
}
}
@ -68,7 +68,7 @@ Index: glibc-2.17/string/test-strcasecmp.c
FOR_EACH_IMPL (impl, 0)
printf ("\t%s", impl->name);
putchar ('\n');
@@ -270,6 +275,19 @@ test_main (void)
@@ -246,6 +251,19 @@ test_main (void)
}
do_random_tests ();
@ -88,10 +88,10 @@ Index: glibc-2.17/string/test-strcasecmp.c
return ret;
}
Index: glibc-2.17/string/test-strncasecmp.c
Index: glibc-2.17.90/string/test-strncasecmp.c
===================================================================
--- glibc-2.17.orig/string/test-strncasecmp.c
+++ glibc-2.17/string/test-strncasecmp.c
--- glibc-2.17.90.orig/string/test-strncasecmp.c
+++ glibc-2.17.90/string/test-strncasecmp.c
@@ -17,6 +17,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
@ -100,7 +100,7 @@ Index: glibc-2.17/string/test-strncasecmp.c
#include <ctype.h>
#define TEST_MAIN
#define TEST_NAME "strncasecmp"
@@ -280,17 +281,21 @@ bz14195 (void)
@@ -256,17 +257,21 @@ bz14195 (void)
check_result (impl, empty_string, "", 5, 0);
}
@ -126,7 +126,7 @@ Index: glibc-2.17/string/test-strncasecmp.c
FOR_EACH_IMPL (impl, 0)
printf ("\t%s", impl->name);
putchar ('\n');
@@ -353,6 +358,19 @@ test_main (void)
@@ -329,6 +334,19 @@ test_main (void)
}
do_random_tests ();

View File

@ -1,98 +0,0 @@
2013-06-11 Andreas Schwab <schwab@suse.de>
[BZ #15577]
* nscd/connections.c (nscd_run_worker): Always zero-terminate key.
* nscd/netgroupcache.c (addgetnetgrentX): Properly handle absent
values in the triple.
* nscd/nscd_netgroup.c (__nscd_setnetgrent): Include zero
terminator in the group key.
Index: glibc-2.17/nscd/connections.c
===================================================================
--- glibc-2.17.orig/nscd/connections.c
+++ glibc-2.17/nscd/connections.c
@@ -1762,7 +1762,7 @@ nscd_run_worker (void *p)
else
{
/* Get the key. */
- char keybuf[MAXKEYLEN];
+ char keybuf[MAXKEYLEN + 1];
if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
req.key_len))
@@ -1774,6 +1774,7 @@ nscd_run_worker (void *p)
strerror_r (errno, buf, sizeof (buf)));
goto close_and_out;
}
+ keybuf[req.key_len] = '\0';
if (__builtin_expect (debug_level, 0) > 0)
{
Index: glibc-2.17/nscd/netgroupcache.c
===================================================================
--- glibc-2.17.orig/nscd/netgroupcache.c
+++ glibc-2.17/nscd/netgroupcache.c
@@ -192,18 +192,26 @@ addgetnetgrentX (struct database_dyn *db
const char *nuser = data.val.triple.user;
const char *ndomain = data.val.triple.domain;
- if (data.val.triple.host > data.val.triple.user
- || data.val.triple.user > data.val.triple.domain)
+ if (nhost == NULL || nuser == NULL || ndomain == NULL
+ || nhost > nuser || nuser > ndomain)
{
- const char *last = MAX (nhost,
- MAX (nuser, ndomain));
- size_t bufused = (last + strlen (last) + 1
- - buffer);
+ const char *last = nhost;
+ if (last == NULL
+ || (nuser != NULL && nuser > last))
+ last = nuser;
+ if (last == NULL
+ || (ndomain != NULL && ndomain > last))
+ last = ndomain;
+
+ size_t bufused
+ = (last == NULL
+ ? buffilled
+ : last + strlen (last) + 1 - buffer);
/* We have to make temporary copies. */
- size_t hostlen = strlen (nhost) + 1;
- size_t userlen = strlen (nuser) + 1;
- size_t domainlen = strlen (ndomain) + 1;
+ size_t hostlen = strlen (nhost ?: "") + 1;
+ size_t userlen = strlen (nuser ?: "") + 1;
+ size_t domainlen = strlen (ndomain ?: "") + 1;
size_t needed = hostlen + userlen + domainlen;
if (buflen - req->key_len - bufused < needed)
@@ -226,11 +234,11 @@ addgetnetgrentX (struct database_dyn *db
}
nhost = memcpy (buffer + bufused,
- nhost, hostlen);
+ nhost ?: "", hostlen);
nuser = memcpy ((char *) nhost + hostlen,
- nuser, userlen);
+ nuser ?: "", userlen);
ndomain = memcpy ((char *) nuser + userlen,
- ndomain, domainlen);
+ ndomain ?: "", domainlen);
}
char *wp = buffer + buffilled;
Index: glibc-2.17/nscd/nscd_netgroup.c
===================================================================
--- glibc-2.17.orig/nscd/nscd_netgroup.c
+++ glibc-2.17/nscd/nscd_netgroup.c
@@ -48,7 +48,7 @@ __nscd_setnetgrent (const char *group, s
{
int gc_cycle;
int nretries = 0;
- size_t group_len = strlen (group);
+ size_t group_len = strlen (group) + 1;
/* If the mapping is available, try to search there instead of
communicating with the nscd. */

View File

@ -1,178 +0,0 @@
From 5a7b70c87c5ba03a122db0372e87ecb550ee4b38 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Tue, 4 Dec 2012 16:14:13 +0100
Subject: [PATCH] Properly check for short writes when sending the response in
nscd
* nscd/grpcache.c (cache_addgr): Properly check for short write.
* nscd/initgrcache.c (addinitgroupsX): Likewise.
* nscd/pwdcache.c (cache_addpw): Likewise.
* nscd/servicescache.c (cache_addserv): Likewise. Don't write
more than recsize.
---
nscd/grpcache.c | 6 +++++-
nscd/initgrcache.c | 7 ++++++-
nscd/pwdcache.c | 8 ++++++--
nscd/servicescache.c | 12 ++++++++----
4 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index f0dad4d..696162f 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -75,6 +75,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
const void *key, struct group *grp, uid_t owner,
struct hashentry *const he, struct datahead *dh, int errval)
{
+ bool all_written = true;
ssize_t total;
ssize_t written;
time_t t = time (NULL);
@@ -342,6 +343,9 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
# endif
#endif
written = writeall (fd, &dataset->resp, dataset->head.recsize);
+
+ if (written != dataset->head.recsize)
+ all_written = false;
}
/* Add the record to the database. But only if it has not been
@@ -401,7 +405,7 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
}
}
- if (__builtin_expect (written != total, 0) && debug_level > 0)
+ if (__builtin_expect (!all_written, 0) && debug_level > 0)
{
char buf[256];
dbg_log (_("short write in %s: %s"), __FUNCTION__,
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index 255b121..13ee86e 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -171,10 +171,12 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
nip = nip->next;
}
+ bool all_written;
ssize_t total;
ssize_t written;
time_t timeout;
out:
+ all_written = true;
timeout = MAX_TIMEOUT_VALUE;
if (!any_success)
{
@@ -379,6 +381,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
# endif
#endif
written = writeall (fd, &dataset->resp, dataset->head.recsize);
+
+ if (written != dataset->head.recsize)
+ all_written = false;
}
@@ -405,7 +410,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
free (groups);
- if (__builtin_expect (written != total, 0) && debug_level > 0)
+ if (__builtin_expect (!all_written, 0) && debug_level > 0)
{
char buf[256];
dbg_log (_("short write in %s: %s"), __FUNCTION__,
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index a8ea407..d6b91ef 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -81,6 +81,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
const void *key, struct passwd *pwd, uid_t owner,
struct hashentry *const he, struct datahead *dh, int errval)
{
+ bool all_written = true;
ssize_t total;
ssize_t written;
time_t t = time (NULL);
@@ -306,7 +307,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
+ db->head->data_size));
written = sendfileall (fd, db->wr_fd,
(char *) &dataset->resp
- - (char *) db->head, dataset->head.recsize );
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -318,6 +319,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
# endif
#endif
written = writeall (fd, &dataset->resp, dataset->head.recsize);
+
+ if (written != dataset->head.recsize)
+ all_written = false;
}
@@ -377,7 +381,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
}
}
- if (__builtin_expect (written != total, 0) && debug_level > 0)
+ if (__builtin_expect (!all_written, 0) && debug_level > 0)
{
char buf[256];
dbg_log (_("short write in %s: %s"), __FUNCTION__,
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
index 0e7520d..917daa4 100644
--- a/nscd/servicescache.c
+++ b/nscd/servicescache.c
@@ -65,6 +65,7 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
const void *key, struct servent *serv, uid_t owner,
struct hashentry *const he, struct datahead *dh, int errval)
{
+ bool all_written = true;
ssize_t total;
ssize_t written;
time_t t = time (NULL);
@@ -290,14 +291,14 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
{
assert (db->wr_fd != -1);
assert ((char *) &dataset->resp > (char *) db->data);
- assert ((char *) &dataset->resp - (char *) db->head
+ assert ((char *) dataset - (char *) db->head
+ total
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
written = sendfileall (fd, db->wr_fd,
(char *) &dataset->resp
- - (char *) db->head, total);
+ - (char *) db->head, dataset->head.recsize);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
@@ -308,7 +309,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
use_write:
# endif
#endif
- written = writeall (fd, &dataset->resp, total);
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
+
+ if (written != dataset->head.recsize)
+ all_written = false;
}
/* Add the record to the database. But only if it has not been
@@ -332,7 +336,7 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
}
}
- if (__builtin_expect (written != total, 0) && debug_level > 0)
+ if (__builtin_expect (!all_written, 0) && debug_level > 0)
{
char buf[256];
dbg_log (_("short write in %s: %s"), __FUNCTION__,
--
1.8.0.1

View File

@ -15,11 +15,11 @@ Subject: [PATCH] Properly cache the result from looking up the nss database
sysdeps/posix/getaddrinfo.c | 14 ++++++--------
3 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 23dcf80..17e06e7 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -85,20 +85,19 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
Index: glibc-2.17.90/nscd/aicache.c
===================================================================
--- glibc-2.17.90.orig/nscd/aicache.c
+++ glibc-2.17.90/nscd/aicache.c
@@ -86,20 +86,19 @@ addhstaiX (struct database_dyn *db, int
}
static service_user *hosts_database;
@ -47,11 +47,11 @@ index 23dcf80..17e06e7 100644
if (__res_maybe_init (&_res, 0) == -1)
no_more = 1;
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
index 462780e..4580884 100644
--- a/nscd/initgrcache.c
+++ b/nscd/initgrcache.c
@@ -80,17 +80,16 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
Index: glibc-2.17.90/nscd/initgrcache.c
===================================================================
--- glibc-2.17.90.orig/nscd/initgrcache.c
+++ glibc-2.17.90/nscd/initgrcache.c
@@ -80,17 +80,16 @@ addinitgroupsX (struct database_dyn *db,
}
static service_user *group_database;
@ -76,11 +76,11 @@ index 462780e..4580884 100644
/* We always use sysconf even if NGROUPS_MAX is defined. That way, the
limit can be raised in the kernel configuration without having to
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index d368306..4800599 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -557,7 +557,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
Index: glibc-2.17.90/sysdeps/posix/getaddrinfo.c
===================================================================
--- glibc-2.17.90.orig/sysdeps/posix/getaddrinfo.c
+++ glibc-2.17.90/sysdeps/posix/getaddrinfo.c
@@ -558,7 +558,7 @@ gaih_inet (const char *name, const struc
struct gaih_addrtuple **pat = &at;
int no_data = 0;
int no_inet6_data = 0;
@ -89,7 +89,7 @@ index d368306..4800599 100644
enum nss_status inet6_status = NSS_STATUS_UNAVAIL;
enum nss_status status = NSS_STATUS_UNAVAIL;
int no_more;
@@ -790,15 +790,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
@@ -791,15 +791,13 @@ gaih_inet (const char *name, const struc
}
#endif
@ -110,6 +110,3 @@ index d368306..4800599 100644
/* Initialize configurations. */
if (__builtin_expect (!_res_hconf.initialized, 0))
--
1.8.2.3

View File

@ -1,9 +1,22 @@
Use /var/db for nss_db
Index: glibc-2.16.90/nss/db-Makefile
Index: glibc-2.17.90/Makeconfig
===================================================================
--- glibc-2.16.90.orig/nss/db-Makefile
+++ glibc-2.16.90/nss/db-Makefile
--- glibc-2.17.90.orig/Makeconfig
+++ glibc-2.17.90/Makeconfig
@@ -259,7 +259,7 @@ inst_sysconfdir = $(install_root)$(sysco
# Directory for the database files and Makefile for nss_db.
ifndef vardbdir
-vardbdir = $(localstatedir)/db
+vardbdir = /var/lib/misc
endif
inst_vardbdir = $(install_root)$(vardbdir)
Index: glibc-2.17.90/nss/db-Makefile
===================================================================
--- glibc-2.17.90.orig/nss/db-Makefile
+++ glibc-2.17.90/nss/db-Makefile
@@ -22,7 +22,7 @@ DATABASES = $(wildcard /etc/passwd /etc/
/etc/rpc /etc/services /etc/shadow /etc/gshadow \
/etc/netgroup)
@ -13,10 +26,10 @@ Index: glibc-2.16.90/nss/db-Makefile
AWK = awk
MAKEDB = makedb --quiet
Index: glibc-2.16.90/sysdeps/unix/sysv/linux/paths.h
Index: glibc-2.17.90/sysdeps/unix/sysv/linux/paths.h
===================================================================
--- glibc-2.16.90.orig/sysdeps/unix/sysv/linux/paths.h
+++ glibc-2.16.90/sysdeps/unix/sysv/linux/paths.h
--- glibc-2.17.90.orig/sysdeps/unix/sysv/linux/paths.h
+++ glibc-2.17.90/sysdeps/unix/sysv/linux/paths.h
@@ -68,7 +68,7 @@
/* Provide trailing slash, since mostly used for building pathnames. */
#define _PATH_DEV "/dev/"
@ -26,16 +39,3 @@ Index: glibc-2.16.90/sysdeps/unix/sysv/linux/paths.h
#define _PATH_VARRUN "/var/run/"
#define _PATH_VARTMP "/var/tmp/"
Index: glibc-2.16.90/Makeconfig
===================================================================
--- glibc-2.16.90.orig/Makeconfig
+++ glibc-2.16.90/Makeconfig
@@ -250,7 +250,7 @@ inst_sysconfdir = $(install_root)$(sysco
# Directory for the database files and Makefile for nss_db.
ifndef vardbdir
-vardbdir = $(localstatedir)/db
+vardbdir = /var/lib/misc
endif
inst_vardbdir = $(install_root)$(vardbdir)

View File

@ -3,10 +3,10 @@
* elf/pldd.c (wait_for_ptrace_stop): New function.
(main): Call it after attaching.
Index: glibc-2.17/elf/pldd.c
Index: glibc-2.17.90/elf/pldd.c
===================================================================
--- glibc-2.17.orig/elf/pldd.c
+++ glibc-2.17/elf/pldd.c
--- glibc-2.17.90.orig/elf/pldd.c
+++ glibc-2.17.90/elf/pldd.c
@@ -34,6 +34,7 @@
#include <unistd.h>
#include <sys/ptrace.h>
@ -15,7 +15,7 @@ Index: glibc-2.17/elf/pldd.c
#include <ldsodefs.h>
#include <version.h>
@@ -85,6 +86,7 @@ static char *exe;
@@ -82,6 +83,7 @@ static char *exe;
/* Local functions. */
static int get_process_info (int dfd, long int pid);
@ -23,7 +23,7 @@ Index: glibc-2.17/elf/pldd.c
int
@@ -173,6 +175,8 @@ main (int argc, char *argv[])
@@ -170,6 +172,8 @@ main (int argc, char *argv[])
tid);
}
@ -32,7 +32,7 @@ Index: glibc-2.17/elf/pldd.c
struct thread_list *newp = alloca (sizeof (*newp));
newp->tid = tid;
newp->next = thread_list;
@@ -197,6 +201,24 @@ main (int argc, char *argv[])
@@ -194,6 +198,24 @@ main (int argc, char *argv[])
}

View File

@ -20,10 +20,10 @@ Subject: [PATCH] PR15362
stdio-common/vfprintf.c | 12 ++++++------
6 files changed, 27 insertions(+), 30 deletions(-)
diff --git a/libio/fileops.c b/libio/fileops.c
index 61b61b3..90d5e88 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
Index: glibc-2.17.90/libio/fileops.c
===================================================================
--- glibc-2.17.90.orig/libio/fileops.c
+++ glibc-2.17.90/libio/fileops.c
@@ -1245,13 +1245,12 @@ _IO_new_file_write (f, data, n)
_IO_ssize_t n;
{
@ -69,10 +69,10 @@ index 61b61b3..90d5e88 100644
block_size = f->_IO_buf_end - f->_IO_buf_base;
do_write = to_do - (block_size >= 128 ? to_do % block_size : 0);
diff --git a/libio/iofwrite.c b/libio/iofwrite.c
index 81596a6..66542ea 100644
--- a/libio/iofwrite.c
+++ b/libio/iofwrite.c
Index: glibc-2.17.90/libio/iofwrite.c
===================================================================
--- glibc-2.17.90.orig/libio/iofwrite.c
+++ glibc-2.17.90/libio/iofwrite.c
@@ -42,12 +42,12 @@ _IO_fwrite (buf, size, count, fp)
if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
written = _IO_sputn (fp, (const char *) buf, request);
@ -91,10 +91,10 @@ index 81596a6..66542ea 100644
else
return written / size;
}
diff --git a/libio/iofwrite_u.c b/libio/iofwrite_u.c
index 4a9d6ca..18dc6d0 100644
--- a/libio/iofwrite_u.c
+++ b/libio/iofwrite_u.c
Index: glibc-2.17.90/libio/iofwrite_u.c
===================================================================
--- glibc-2.17.90.orig/libio/iofwrite_u.c
+++ glibc-2.17.90/libio/iofwrite_u.c
@@ -44,12 +44,12 @@ fwrite_unlocked (buf, size, count, fp)
if (_IO_fwide (fp, -1) == -1)
{
@ -113,10 +113,10 @@ index 4a9d6ca..18dc6d0 100644
}
return written / size;
diff --git a/libio/iopadn.c b/libio/iopadn.c
index cc93c0f..5ebbcf4 100644
--- a/libio/iopadn.c
+++ b/libio/iopadn.c
Index: glibc-2.17.90/libio/iopadn.c
===================================================================
--- glibc-2.17.90.orig/libio/iopadn.c
+++ glibc-2.17.90/libio/iopadn.c
@@ -59,7 +59,7 @@ _IO_padn (fp, pad, count)
w = _IO_sputn (fp, padptr, PADSIZE);
written += w;
@ -126,10 +126,10 @@ index cc93c0f..5ebbcf4 100644
}
if (i > 0)
diff --git a/libio/iowpadn.c b/libio/iowpadn.c
index d94db71..5600f37 100644
--- a/libio/iowpadn.c
+++ b/libio/iowpadn.c
Index: glibc-2.17.90/libio/iowpadn.c
===================================================================
--- glibc-2.17.90.orig/libio/iowpadn.c
+++ glibc-2.17.90/libio/iowpadn.c
@@ -65,7 +65,7 @@ _IO_wpadn (fp, pad, count)
w = _IO_sputn (fp, (char *) padptr, PADSIZE);
written += w;
@ -139,18 +139,18 @@ index d94db71..5600f37 100644
}
if (i > 0)
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index c8bcf5a..61d9dc2 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
Index: glibc-2.17.90/stdio-common/vfprintf.c
===================================================================
--- glibc-2.17.90.orig/stdio-common/vfprintf.c
+++ glibc-2.17.90/stdio-common/vfprintf.c
@@ -90,13 +90,13 @@
do { \
if (width > 0) \
{ \
- unsigned int d = _IO_padn (s, (Padchar), width); \
- if (__builtin_expect (d == EOF, 0)) \
- if (__glibc_unlikely (d == EOF)) \
+ _IO_ssize_t written = _IO_padn (s, (Padchar), width); \
+ if (__builtin_expect (written != width, 0)) \
+ if (__glibc_unlikely (written != width)) \
{ \
done = -1; \
goto all_done; \
@ -165,9 +165,9 @@ index c8bcf5a..61d9dc2 100644
if (width > 0) \
{ \
- unsigned int d = _IO_wpadn (s, (Padchar), width); \
- if (__builtin_expect (d == EOF, 0)) \
- if (__glibc_unlikely (d == EOF)) \
+ _IO_ssize_t written = _IO_wpadn (s, (Padchar), width); \
+ if (__builtin_expect (written != width, 0)) \
+ if (__glibc_unlikely (written != width)) \
{ \
done = -1; \
goto all_done; \

View File

@ -1,526 +0,0 @@
From b8a72d0c4ca74e52ea06fa4e56489499489ec158 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Thu, 22 Nov 2012 12:57:37 +0100
Subject: [PATCH] Extend i486 pthread_cond_timedwait to use futex syscall with
absolute timeout
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
(__pthread_cond_timedwait): If possible use FUTEX_WAIT_BITSET to
directly use absolute timeout.
---
.../sysv/linux/i386/i486/pthread_cond_timedwait.S | 381 +++++++++++++++++----
1 file changed, 315 insertions(+), 66 deletions(-)
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 6011f69..b9dbe6b 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -66,6 +66,34 @@ __pthread_cond_timedwait:
movl $EINVAL, %eax
jae 18f
+ /* Stack frame:
+
+ esp + 32
+ +--------------------------+
+ esp + 24 | timeout value |
+ +--------------------------+
+ esp + 20 | futex pointer |
+ +--------------------------+
+ esp + 16 | pi-requeued flag |
+ +--------------------------+
+ esp + 12 | old broadcast_seq value |
+ +--------------------------+
+ esp + 4 | old wake_seq value |
+ +--------------------------+
+ esp + 0 | old cancellation mode |
+ +--------------------------+
+ */
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+# ifdef PIC
+ LOAD_PIC_REG (cx)
+ cmpl $0, __have_futex_clock_realtime@GOTOFF(%ecx)
+# else
+ cmpl $0, __have_futex_clock_realtime
+# endif
+ je .Lreltmo
+#endif
+
/* Get internal lock. */
movl $1, %edx
xorl %eax, %eax
@@ -96,7 +124,11 @@ __pthread_cond_timedwait:
addl $1, cond_futex(%ebx)
addl $(1 << nwaiters_shift), cond_nwaiters(%ebx)
-#define FRAME_SIZE 32
+#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+# define FRAME_SIZE 24
+#else
+# define FRAME_SIZE 32
+#endif
subl $FRAME_SIZE, %esp
cfi_adjust_cfa_offset(FRAME_SIZE)
cfi_remember_state
@@ -105,60 +137,19 @@ __pthread_cond_timedwait:
movl wakeup_seq(%ebx), %edi
movl wakeup_seq+4(%ebx), %edx
movl broadcast_seq(%ebx), %eax
- movl %edi, 12(%esp)
- movl %edx, 16(%esp)
- movl %eax, 20(%esp)
+ movl %edi, 4(%esp)
+ movl %edx, 8(%esp)
+ movl %eax, 12(%esp)
/* Reset the pi-requeued flag. */
-8: movl $0, 24(%esp)
- /* Get the current time. */
- movl %ebx, %edx
-#ifdef __NR_clock_gettime
- /* Get the clock number. */
- movl cond_nwaiters(%ebx), %ebx
- andl $((1 << nwaiters_shift) - 1), %ebx
- /* Only clocks 0 and 1 are allowed so far. Both are handled in the
- kernel. */
- leal 4(%esp), %ecx
- movl $__NR_clock_gettime, %eax
- ENTER_KERNEL
- movl %edx, %ebx
-
- /* Compute relative timeout. */
- movl (%ebp), %ecx
- movl 4(%ebp), %edx
- subl 4(%esp), %ecx
- subl 8(%esp), %edx
-#else
- /* Get the current time. */
- leal 4(%esp), %ebx
- xorl %ecx, %ecx
- movl $__NR_gettimeofday, %eax
- ENTER_KERNEL
- movl %edx, %ebx
+ movl $0, 16(%esp)
- /* Compute relative timeout. */
- movl 8(%esp), %eax
- movl $1000, %edx
- mul %edx /* Milli seconds to nano seconds. */
- movl (%ebp), %ecx
- movl 4(%ebp), %edx
- subl 4(%esp), %ecx
- subl %eax, %edx
-#endif
- jns 12f
- addl $1000000000, %edx
- subl $1, %ecx
-12: testl %ecx, %ecx
+ cmpl $0, (%ebp)
movl $-ETIMEDOUT, %esi
js 6f
- /* Store relative timeout. */
-21: movl %ecx, 4(%esp)
- movl %edx, 8(%esp)
-
- movl cond_futex(%ebx), %edi
- movl %edi, 28(%esp)
+8: movl cond_futex(%ebx), %edi
+ movl %edi, 20(%esp)
/* Unlock. */
LOCK
@@ -173,6 +164,7 @@ __pthread_cond_timedwait:
4: call __pthread_enable_asynccancel
movl %eax, (%esp)
+ leal (%ebp), %esi
#if FUTEX_PRIVATE_FLAG > 255
xorl %ecx, %ecx
#endif
@@ -196,9 +188,7 @@ __pthread_cond_timedwait:
jne 42f
orl $FUTEX_CLOCK_REALTIME, %ecx
- /* Requeue-PI uses absolute timeout */
-42: leal (%ebp), %esi
- movl 28(%esp), %edx
+42: movl 20(%esp), %edx
addl $cond_futex, %ebx
.Ladd_cond_futex_pi:
movl $SYS_futex, %eax
@@ -209,12 +199,12 @@ __pthread_cond_timedwait:
/* Set the pi-requeued flag only if the kernel has returned 0. The
kernel does not hold the mutex on ETIMEDOUT or any other error. */
cmpl $0, %eax
- sete 24(%esp)
+ sete 16(%esp)
je 41f
/* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns
successfully, it has already locked the mutex for us and the
- pi_flag (24(%esp)) is set to denote that fact. However, if another
+ pi_flag (16(%esp)) is set to denote that fact. However, if another
thread changed the futex value before we entered the wait, the
syscall may return an EAGAIN and the mutex is not locked. We go
ahead with a success anyway since later we look at the pi_flag to
@@ -234,22 +224,28 @@ __pthread_cond_timedwait:
xorl %ecx, %ecx
40: subl $1, %ecx
+ movl $0, 16(%esp)
#ifdef __ASSUME_PRIVATE_FUTEX
andl $FUTEX_PRIVATE_FLAG, %ecx
#else
andl %gs:PRIVATE_FUTEX, %ecx
#endif
-#if FUTEX_WAIT != 0
- addl $FUTEX_WAIT, %ecx
-#endif
- leal 4(%esp), %esi
- movl 28(%esp), %edx
+ addl $FUTEX_WAIT_BITSET, %ecx
+ /* The following only works like this because we only support
+ two clocks, represented using a single bit. */
+ testl $1, cond_nwaiters(%ebx)
+ jne 30f
+ orl $FUTEX_CLOCK_REALTIME, %ecx
+30:
+ movl 20(%esp), %edx
+ movl $0xffffffff, %ebp
addl $cond_futex, %ebx
.Ladd_cond_futex:
movl $SYS_futex, %eax
ENTER_KERNEL
subl $cond_futex, %ebx
.Lsub_cond_futex:
+ movl 28+FRAME_SIZE(%esp), %ebp
movl %eax, %esi
41: movl (%esp), %eax
@@ -268,7 +264,7 @@ __pthread_cond_timedwait:
jnz 5f
6: movl broadcast_seq(%ebx), %eax
- cmpl 20(%esp), %eax
+ cmpl 12(%esp), %eax
jne 23f
movl woken_seq(%ebx), %eax
@@ -277,9 +273,9 @@ __pthread_cond_timedwait:
movl wakeup_seq(%ebx), %edi
movl wakeup_seq+4(%ebx), %edx
- cmpl 16(%esp), %edx
+ cmpl 8(%esp), %edx
jne 7f
- cmpl 12(%esp), %edi
+ cmpl 4(%esp), %edi
je 15f
7: cmpl %ecx, %edx
@@ -292,7 +288,7 @@ __pthread_cond_timedwait:
/* We need to go back to futex_wait. If we're using requeue_pi, then
release the mutex we had acquired and go back. */
- movl 24(%esp), %edx
+ movl 16(%esp), %edx
test %edx, %edx
jz 8b
@@ -357,13 +353,13 @@ __pthread_cond_timedwait:
11: movl 24+FRAME_SIZE(%esp), %eax
/* With requeue_pi, the mutex lock is held in the kernel. */
- movl 24(%esp), %ecx
+ movl 16(%esp), %ecx
testl %ecx, %ecx
jnz 27f
call __pthread_mutex_cond_lock
26: addl $FRAME_SIZE, %esp
- cfi_adjust_cfa_offset(-FRAME_SIZE);
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
/* We return the result of the mutex_lock operation if it failed. */
testl %eax, %eax
@@ -509,6 +505,245 @@ __pthread_cond_timedwait:
#endif
call __lll_unlock_wake
jmp 11b
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
+
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+.Lreltmo:
+ /* Get internal lock. */
+ movl $1, %edx
+ xorl %eax, %eax
+ LOCK
+# if cond_lock == 0
+ cmpxchgl %edx, (%ebx)
+# else
+ cmpxchgl %edx, cond_lock(%ebx)
+# endif
+ jnz 101f
+
+ /* Store the reference to the mutex. If there is already a
+ different value in there this is a bad user bug. */
+102: cmpl $-1, dep_mutex(%ebx)
+ movl 24(%esp), %eax
+ je 117f
+ movl %eax, dep_mutex(%ebx)
+
+ /* Unlock the mutex. */
+117: xorl %edx, %edx
+ call __pthread_mutex_unlock_usercnt
+
+ testl %eax, %eax
+ jne 16b
+
+ addl $1, total_seq(%ebx)
+ adcl $0, total_seq+4(%ebx)
+ addl $1, cond_futex(%ebx)
+ addl $(1 << nwaiters_shift), cond_nwaiters(%ebx)
+
+ subl $FRAME_SIZE, %esp
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
+ /* Get and store current wakeup_seq value. */
+ movl wakeup_seq(%ebx), %edi
+ movl wakeup_seq+4(%ebx), %edx
+ movl broadcast_seq(%ebx), %eax
+ movl %edi, 4(%esp)
+ movl %edx, 8(%esp)
+ movl %eax, 12(%esp)
+
+ /* Reset the pi-requeued flag. */
+ movl $0, 16(%esp)
+
+ /* Get the current time. */
+108: movl %ebx, %edx
+# ifdef __NR_clock_gettime
+ /* Get the clock number. */
+ movl cond_nwaiters(%ebx), %ebx
+ andl $((1 << nwaiters_shift) - 1), %ebx
+ /* Only clocks 0 and 1 are allowed so far. Both are handled in the
+ kernel. */
+ leal 24(%esp), %ecx
+ movl $__NR_clock_gettime, %eax
+ ENTER_KERNEL
+ movl %edx, %ebx
+
+ /* Compute relative timeout. */
+ movl (%ebp), %ecx
+ movl 4(%ebp), %edx
+ subl 24(%esp), %ecx
+ subl 28(%esp), %edx
+# else
+ /* Get the current time. */
+ leal 24(%esp), %ebx
+ xorl %ecx, %ecx
+ movl $__NR_gettimeofday, %eax
+ ENTER_KERNEL
+ movl %edx, %ebx
+
+ /* Compute relative timeout. */
+ movl 28(%esp), %eax
+ movl $1000, %edx
+ mul %edx /* Milli seconds to nano seconds. */
+ movl (%ebp), %ecx
+ movl 4(%ebp), %edx
+ subl 24(%esp), %ecx
+ subl %eax, %edx
+# endif
+ jns 112f
+ addl $1000000000, %edx
+ subl $1, %ecx
+112: testl %ecx, %ecx
+ movl $-ETIMEDOUT, %esi
+ js 106f
+
+ /* Store relative timeout. */
+121: movl %ecx, 24(%esp)
+ movl %edx, 28(%esp)
+
+ movl cond_futex(%ebx), %edi
+ movl %edi, 20(%esp)
+
+ /* Unlock. */
+ LOCK
+# if cond_lock == 0
+ subl $1, (%ebx)
+# else
+ subl $1, cond_lock(%ebx)
+# endif
+ jne 103f
+
+.LcleanupSTART2:
+104: call __pthread_enable_asynccancel
+ movl %eax, (%esp)
+
+ leal 24(%esp), %esi
+# if FUTEX_PRIVATE_FLAG > 255
+ xorl %ecx, %ecx
+# endif
+ cmpl $-1, dep_mutex(%ebx)
+ sete %cl
+ subl $1, %ecx
+# ifdef __ASSUME_PRIVATE_FUTEX
+ andl $FUTEX_PRIVATE_FLAG, %ecx
+# else
+ andl %gs:PRIVATE_FUTEX, %ecx
+# endif
+# if FUTEX_WAIT != 0
+ addl $FUTEX_WAIT, %ecx
+# endif
+ movl 20(%esp), %edx
+ addl $cond_futex, %ebx
+.Ladd_cond_futex2:
+ movl $SYS_futex, %eax
+ ENTER_KERNEL
+ subl $cond_futex, %ebx
+.Lsub_cond_futex2:
+ movl %eax, %esi
+
+141: movl (%esp), %eax
+ call __pthread_disable_asynccancel
+.LcleanupEND2:
+
+
+ /* Lock. */
+ movl $1, %edx
+ xorl %eax, %eax
+ LOCK
+# if cond_lock == 0
+ cmpxchgl %edx, (%ebx)
+# else
+ cmpxchgl %edx, cond_lock(%ebx)
+# endif
+ jnz 105f
+
+106: movl broadcast_seq(%ebx), %eax
+ cmpl 12(%esp), %eax
+ jne 23b
+
+ movl woken_seq(%ebx), %eax
+ movl woken_seq+4(%ebx), %ecx
+
+ movl wakeup_seq(%ebx), %edi
+ movl wakeup_seq+4(%ebx), %edx
+
+ cmpl 8(%esp), %edx
+ jne 107f
+ cmpl 4(%esp), %edi
+ je 115f
+
+107: cmpl %ecx, %edx
+ jne 9b
+ cmp %eax, %edi
+ jne 9b
+
+115: cmpl $-ETIMEDOUT, %esi
+ je 28b
+
+ jmp 8b
+
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
+ /* Initial locking failed. */
+101:
+# if cond_lock == 0
+ movl %ebx, %edx
+# else
+ leal cond_lock(%ebx), %edx
+# endif
+# if (LLL_SHARED-LLL_PRIVATE) > 255
+ xorl %ecx, %ecx
+# endif
+ cmpl $-1, dep_mutex(%ebx)
+ setne %cl
+ subl $1, %ecx
+ andl $(LLL_SHARED-LLL_PRIVATE), %ecx
+# if LLL_PRIVATE != 0
+ addl $LLL_PRIVATE, %ecx
+# endif
+ call __lll_lock_wait
+ jmp 102b
+
+ cfi_adjust_cfa_offset(FRAME_SIZE)
+
+ /* Unlock in loop requires wakeup. */
+103:
+# if cond_lock == 0
+ movl %ebx, %eax
+# else
+ leal cond_lock(%ebx), %eax
+# endif
+# if (LLL_SHARED-LLL_PRIVATE) > 255
+ xorl %ecx, %ecx
+# endif
+ cmpl $-1, dep_mutex(%ebx)
+ setne %cl
+ subl $1, %ecx
+ andl $(LLL_SHARED-LLL_PRIVATE), %ecx
+# if LLL_PRIVATE != 0
+ addl $LLL_PRIVATE, %ecx
+# endif
+ call __lll_unlock_wake
+ jmp 104b
+
+ /* Locking in loop failed. */
+105:
+# if cond_lock == 0
+ movl %ebx, %edx
+# else
+ leal cond_lock(%ebx), %edx
+# endif
+# if (LLL_SHARED-LLL_PRIVATE) > 255
+ xorl %ecx, %ecx
+# endif
+ cmpl $-1, dep_mutex(%ebx)
+ setne %cl
+ subl $1, %ecx
+ andl $(LLL_SHARED-LLL_PRIVATE), %ecx
+# if LLL_PRIVATE != 0
+ addl $LLL_PRIVATE, %ecx
+# endif
+ call __lll_lock_wait
+ jmp 106b
+ cfi_adjust_cfa_offset(-FRAME_SIZE)
+#endif
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
@@ -552,7 +787,7 @@ __condvar_tw_cleanup:
call __lll_lock_wait
1: movl broadcast_seq(%ebx), %eax
- cmpl 20(%esp), %eax
+ cmpl 12(%esp), %eax
jne 3f
/* We increment the wakeup_seq counter only if it is lower than
@@ -706,6 +941,20 @@ __condvar_tw_cleanup:
.long .LcleanupEND-.Lsub_cond_futex
.long __condvar_tw_cleanup-.LSTARTCODE
.uleb128 0
+#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+ .long .LcleanupSTART2-.LSTARTCODE
+ .long .Ladd_cond_futex2-.LcleanupSTART2
+ .long __condvar_tw_cleanup-.LSTARTCODE
+ .uleb128 0
+ .long .Ladd_cond_futex2-.LSTARTCODE
+ .long .Lsub_cond_futex2-.Ladd_cond_futex2
+ .long __condvar_tw_cleanup2-.LSTARTCODE
+ .uleb128 0
+ .long .Lsub_cond_futex2-.LSTARTCODE
+ .long .LcleanupEND2-.Lsub_cond_futex2
+ .long __condvar_tw_cleanup-.LSTARTCODE
+ .uleb128 0
+#endif
.long .LcallUR-.LSTARTCODE
.long .LENDCODE-.LcallUR
.long 0
--
1.8.0.1

View File

@ -1,161 +0,0 @@
From a445af0bc722d620afed7683cd320c0e4c7c6059 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Tue, 29 Jan 2013 14:45:15 +0100
Subject: [PATCH] Fix buffer overrun in regexp matcher
[BZ #15078]
* posix/regexec.c (extend_buffers): Add parameter min_len.
(check_matching): Pass minimum needed length.
(clean_state_log_if_needed): Likewise.
(get_subexp): Likewise.
* posix/Makefile (tests): Add bug-regex34.
(bug-regex34-ENV): Define.
* posix/bug-regex34.c: New file.
---
ChangeLog | 9 +++++++++
NEWS | 3 ++-
posix/Makefile | 3 ++-
posix/bug-regex34.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
posix/regexec.c | 16 +++++++++-------
5 files changed, 68 insertions(+), 9 deletions(-)
create mode 100644 posix/bug-regex34.c
diff --git a/posix/Makefile b/posix/Makefile
index 88d409f..2cacd21 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -86,7 +86,7 @@ tests := tstgetopt testfnm runtests runptests \
tst-rfc3484-3 \
tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \
bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
- bug-getopt5 tst-getopt_long1
+ bug-getopt5 tst-getopt_long1 bug-regex34
xtests := bug-ga2
ifeq (yes,$(build-shared))
test-srcs := globtest
@@ -199,6 +199,7 @@ bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex30-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex32-ENV = LOCPATH=$(common-objpfx)localedata
bug-regex33-ENV = LOCPATH=$(common-objpfx)localedata
+bug-regex34-ENV = LOCPATH=$(common-objpfx)localedata
tst-rxspencer-ARGS = --utf8 rxspencer/tests
tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata
tst-pcre-ARGS = PCRE.tests
diff --git a/posix/bug-regex34.c b/posix/bug-regex34.c
new file mode 100644
index 0000000..bb3b613
--- /dev/null
+++ b/posix/bug-regex34.c
@@ -0,0 +1,46 @@
+/* Test re_search with multi-byte characters in UTF-8.
+ Copyright (C) 2013 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/>. */
+
+#define _GNU_SOURCE 1
+#include <stdio.h>
+#include <string.h>
+#include <locale.h>
+#include <regex.h>
+
+static int
+do_test (void)
+{
+ struct re_pattern_buffer r;
+ /* ကျွန်ုပ်x */
+ const char *s = "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax";
+
+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
+ {
+ puts ("setlocale failed");
+ return 1;
+ }
+ memset (&r, 0, sizeof (r));
+
+ re_compile_pattern ("[^x]x", 5, &r);
+ /* This was triggering a buffer overflow. */
+ re_search (&r, s, strlen (s), 0, strlen (s), 0);
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/regexec.c b/posix/regexec.c
index 7f2de85..5ca2bf6 100644
--- a/posix/regexec.c
+++ b/posix/regexec.c
@@ -197,7 +197,7 @@ static int group_nodes_into_DFAstates (const re_dfa_t *dfa,
static int check_node_accept (const re_match_context_t *mctx,
const re_token_t *node, int idx)
internal_function;
-static reg_errcode_t extend_buffers (re_match_context_t *mctx)
+static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len)
internal_function;
/* Entry point for POSIX code. */
@@ -1160,7 +1160,7 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
|| (BE (next_char_idx >= mctx->input.valid_len, 0)
&& mctx->input.valid_len < mctx->input.len))
{
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, next_char_idx + 1);
if (BE (err != REG_NOERROR, 0))
{
assert (err == REG_ESPACE);
@@ -1738,7 +1738,7 @@ clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx)
&& mctx->input.valid_len < mctx->input.len))
{
reg_errcode_t err;
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, next_state_log_idx + 1);
if (BE (err != REG_NOERROR, 0))
return err;
}
@@ -2792,7 +2792,7 @@ get_subexp (re_match_context_t *mctx, int bkref_node, int bkref_str_idx)
if (bkref_str_off >= mctx->input.len)
break;
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, bkref_str_off + 1);
if (BE (err != REG_NOERROR, 0))
return err;
@@ -4102,7 +4102,7 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
static reg_errcode_t
internal_function __attribute_warn_unused_result__
-extend_buffers (re_match_context_t *mctx)
+extend_buffers (re_match_context_t *mctx, int min_len)
{
reg_errcode_t ret;
re_string_t *pstr = &mctx->input;
@@ -4111,8 +4111,10 @@ extend_buffers (re_match_context_t *mctx)
if (BE (INT_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
return REG_ESPACE;
- /* Double the lengthes of the buffers. */
- ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2));
+ /* Double the lengthes of the buffers, but allocate at least MIN_LEN. */
+ ret = re_string_realloc_buffers (pstr,
+ MAX (min_len,
+ MIN (pstr->len, pstr->bufs_len * 2)));
if (BE (ret != REG_NOERROR, 0))
return ret;
--
1.8.2.3

View File

@ -1,288 +0,0 @@
From aaa8cb4b43511c62b11ac6f10e9beea3d5035a68 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Mon, 18 Mar 2013 12:44:47 +0100
Subject: [PATCH 1/3] Add support for rtld directory different from slib
directory
* configure.in: Substitute libc_cv_rtlddir.
* configure: Regenerate.
* config.make.in (rtlddir): Set from libc_cv_rtlddir.
* Makeconfig (rtlddir, inst_rtlddir): New variables.
(rtld-LDFLAGS): Use them with $(rtld-installed-name).
* elf/Makefile (install-others, CFLAGS-interp.c)
(ldso_install, common-ldd-rewrite): Likewise.
($(inst_rtlddir)/$(rtld-installed-name)): Renamed from
$(inst_slibdir)/$(rtld-installed-name).
* scripts/rellns-sh: Add -p option.
* Makerules (make-shlib-link): Use rellns-sh to get relative name
for source.
---
ChangeLog | 15 +++++++++++++++
Makeconfig | 10 ++++++++--
Makerules | 4 ++--
config.make.in | 1 +
configure | 2 ++
configure.in | 1 +
elf/Makefile | 11 ++++++-----
scripts/rellns-sh | 17 +++++++++++++++--
8 files changed, 50 insertions(+), 11 deletions(-)
Index: glibc-2.17/Makeconfig
===================================================================
--- glibc-2.17.orig/Makeconfig
+++ glibc-2.17/Makeconfig
@@ -148,12 +148,18 @@ libdir = $(exec_prefix)/lib
endif
inst_libdir = $(install_root)$(libdir)
-# Where to install the shared library and dynamic linker.
+# Where to install the shared library.
ifndef slibdir
slibdir = $(exec_prefix)/lib
endif
inst_slibdir = $(install_root)$(slibdir)
+# Where to install the dynamic linker.
+ifndef rtlddir
+rtlddir = $(slibdir)
+endif
+inst_rtlddir = $(install_root)$(rtlddir)
+
# Prefix to put on files installed in $(libdir). For libraries `libNAME.a',
# the prefix is spliced between `lib' and the name, so the linker switch
# `-l$(libprefix)NAME' finds the library; for other files the prefix is
@@ -443,7 +449,7 @@ ifndef +link-bounded
endif
ifndef config-LDFLAGS
ifeq (yes,$(build-shared))
-config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name)
+config-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
endif
endif
ifndef link-libc
Index: glibc-2.17/Makerules
===================================================================
--- glibc-2.17.orig/Makerules
+++ glibc-2.17/Makerules
@@ -873,7 +873,7 @@ ifeq (no,$(cross-compiling))
symbolic-link-prog := $(common-objpfx)elf/sln
symbolic-link-list := $(common-objpfx)elf/symlink.list
define make-shlib-link
-echo $(<F) $@ >> $(symbolic-link-list)
+echo `$(..)scripts/rellns-sh -p $< $@` $@ >> $(symbolic-link-list)
endef
else # cross-compiling
# We need a definition that can be used by elf/Makefile's install rules.
@@ -883,7 +883,7 @@ endif
ifndef make-shlib-link
define make-shlib-link
rm -f $@
-$(LN_S) $(<F) $@
+$(LN_S) `$(..)scripts/rellns-sh -p $< $@` $@
endef
endif
@@ -937,7 +937,7 @@ $(inst_libdir)/libc.so: $(common-objpfx)
cat $<; \
echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
'$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
- ' AS_NEEDED (' $(slibdir)/$(rtld-installed-name) ') )' \
+ ' AS_NEEDED (' $(rtlddir)/$(rtld-installed-name) ') )' \
) > $@.new
mv -f $@.new $@
Index: glibc-2.17/config.make.in
===================================================================
--- glibc-2.17.orig/config.make.in
+++ glibc-2.17/config.make.in
@@ -11,6 +11,7 @@ exec_prefix = @exec_prefix@
datadir = @datadir@
libdir = @libdir@
slibdir = @libc_cv_slibdir@
+rtlddir = @libc_cv_rtlddir@
localedir = @libc_cv_localedir@
sysconfdir = @libc_cv_sysconfdir@
libexecdir = @libexecdir@
Index: glibc-2.17/configure
===================================================================
--- glibc-2.17.orig/configure
+++ glibc-2.17/configure
@@ -594,6 +594,7 @@ libc_cv_rootsbindir
libc_cv_localstatedir
libc_cv_sysconfdir
libc_cv_localedir
+libc_cv_rtlddir
libc_cv_slibdir
old_glibc_headers
use_nscd
@@ -7584,6 +7585,7 @@ fi
+
Index: glibc-2.17/configure.in
===================================================================
--- glibc-2.17.orig/configure.in
+++ glibc-2.17/configure.in
@@ -2117,6 +2117,7 @@ fi
AC_SUBST(old_glibc_headers)
AC_SUBST(libc_cv_slibdir)
+AC_SUBST(libc_cv_rtlddir)
AC_SUBST(libc_cv_localedir)
AC_SUBST(libc_cv_sysconfdir)
AC_SUBST(libc_cv_localstatedir)
Index: glibc-2.17/elf/Makefile
===================================================================
--- glibc-2.17.orig/elf/Makefile
+++ glibc-2.17/elf/Makefile
@@ -66,7 +66,7 @@ endif
ifeq (yes,$(build-shared))
extra-objs = $(all-rtld-routines:%=%.os) soinit.os sofini.os interp.os
generated += librtld.os dl-allobjs.os ld.so ldd
-install-others = $(inst_slibdir)/$(rtld-installed-name)
+install-others = $(inst_rtlddir)/$(rtld-installed-name)
install-bin-script = ldd
endif
@@ -340,7 +340,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
| $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
# interp.c exists just to get this string into the libraries.
-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \
+CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \
-DNOT_IN_libc=1
$(objpfx)interp.os: $(common-objpfx)config.make
@@ -372,18 +372,19 @@ $(inst_slibdir)/$(rtld-version-installed
$(make-target-directory)
$(do-install-program)
-$(inst_slibdir)/$(rtld-installed-name): \
+$(inst_rtlddir)/$(rtld-installed-name): \
$(inst_slibdir)/$(rtld-version-installed-name) \
$(inst_slibdir)/libc-$(version).so
+ $(make-target-directory)
$(make-shlib-link)
# Special target called by parent to install just the dynamic linker.
.PHONY: ldso_install
-ldso_install: $(inst_slibdir)/$(rtld-installed-name)
+ldso_install: $(inst_rtlddir)/$(rtld-installed-name)
endif
-common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
+common-ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' \
-e 's|@PKGVERSION@|$(PKGVERSION)|g' \
-e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g'
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/configure
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/configure
@@ -7,6 +7,7 @@ test -n "$libc_cv_slibdir" ||
case "$prefix" in
/usr | /usr/)
libc_cv_slibdir="/lib64"
+ libc_cv_rtlddir="/lib"
if test "$libdir" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/lib64';
# Locale data can be shared between 32bit and 64bit libraries
Index: glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
===================================================================
--- glibc-2.17.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
+++ glibc-2.17/ports/sysdeps/unix/sysv/linux/aarch64/configure.in
@@ -7,6 +7,7 @@ test -n "$libc_cv_slibdir" ||
case "$prefix" in
/usr | /usr/)
libc_cv_slibdir="/lib64"
+ libc_cv_rtlddir="/lib"
if test "$libdir" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/lib64';
# Locale data can be shared between 32bit and 64bit libraries
Index: glibc-2.17/scripts/rellns-sh
===================================================================
--- glibc-2.17.orig/scripts/rellns-sh
+++ glibc-2.17/scripts/rellns-sh
@@ -16,8 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# With -p, instead of creating the link print the computed relative link
+# name.
+do_print=false
+case $1 in
+ -p)
+ do_print=true
+ shift
+ ;;
+esac
if test $# -ne 2; then
- echo "Usage: rellns SOURCE DEST" >&2
+ echo "Usage: rellns [-p] SOURCE DEST" >&2
exit 1
fi
@@ -70,4 +79,8 @@ while test -n "$from"; do
from=`echo $from | sed 's%^[^/]*/*%%'`
done
-ln -s $rfrom$to $2
+if $do_print; then
+ echo "$rfrom$to"
+else
+ ln -s $rfrom$to $2
+fi
Index: glibc-2.17/sysdeps/gnu/configure
===================================================================
--- glibc-2.17.orig/sysdeps/gnu/configure
+++ glibc-2.17/sysdeps/gnu/configure
@@ -9,12 +9,17 @@
case "$prefix" in
/usr | /usr/)
# 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
- # Allow earlier configure scripts to handle libc_cv_slibdir, libdir,
- # and libc_cv_localedir.
+ # Allow earlier configure scripts to handle libc_cv_slibdir,
+ # libc_cv_rtlddir, libdir, and libc_cv_localedir.
test -n "$libc_cv_slibdir" || \
case $machine in
sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64)
libc_cv_slibdir=/lib64
+ case $machine in
+ s390/s390-64)
+ libc_cv_rtlddir=/lib
+ ;;
+ esac
if test "$libdir" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/lib64';
# Locale data can be shared between 32bit and 64bit libraries
Index: glibc-2.17/sysdeps/gnu/configure.in
===================================================================
--- glibc-2.17.orig/sysdeps/gnu/configure.in
+++ glibc-2.17/sysdeps/gnu/configure.in
@@ -9,12 +9,17 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the
case "$prefix" in
/usr | /usr/)
# 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
- # Allow earlier configure scripts to handle libc_cv_slibdir, libdir,
- # and libc_cv_localedir.
+ # Allow earlier configure scripts to handle libc_cv_slibdir,
+ # libc_cv_rtlddir, libdir, and libc_cv_localedir.
test -n "$libc_cv_slibdir" || \
case $machine in
sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64)
libc_cv_slibdir=/lib64
+ case $machine in
+ s390/s390-64)
+ libc_cv_rtlddir=/lib
+ ;;
+ esac
if test "$libdir" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/lib64';
# Locale data can be shared between 32bit and 64bit libraries

View File

@ -1,44 +0,0 @@
From 3cc4f772e4e1a0999bf9a51a585c35d6f60421b6 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Tue, 5 Feb 2013 14:40:39 +0100
Subject: [PATCH] Properly handle %W in strptime
[BZ #15100]
* time/strptime_l.c (__strptime_internal): Count Sunday in a %W
week as 6 instead of -1.
* tst-strptime.c (day_tests): Add test case.
---
time/strptime_l.c | 4 ++--
time/tst-strptime.c | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/time/strptime_l.c b/time/strptime_l.c
index 1f2e8b6..00fc1ef 100644
--- a/time/strptime_l.c
+++ b/time/strptime_l.c
@@ -1180,8 +1180,8 @@ __strptime_internal (rp, fmt, tmp, statep LOCALE_PARAM)
if (!s.have_yday)
tm->tm_yday = ((7 - (tm->tm_wday - w_offset)) % 7
- + (s.week_no - 1) *7
- + save_wday - w_offset);
+ + (s.week_no - 1) * 7
+ + (save_wday - w_offset + 7) % 7);
if (!s.have_mday || !s.have_mon)
{
diff --git a/time/tst-strptime.c b/time/tst-strptime.c
index 12b084d..21fbb63 100644
--- a/time/tst-strptime.c
+++ b/time/tst-strptime.c
@@ -41,6 +41,7 @@ static const struct
{ "C", "19990502123412", "%Y%m%d%H%M%S", 0, 121, 4, 2 },
{ "C", "2001 20 Mon", "%Y %U %a", 1, 140, 4, 21 },
{ "C", "2001 21 Mon", "%Y %W %a", 1, 140, 4, 21 },
+ { "C", "2012 00 Sun", "%Y %W %a", 0, 0, 0, 1 },
{ "ja_JP.EUC-JP", "2000-01-01 08:12:21 AM", "%Y-%m-%d %I:%M:%S %p",
6, 0, 0, 1 },
{ "en_US.ISO-8859-1", "2000-01-01 08:12:21 PM", "%Y-%m-%d %I:%M:%S %p",
--
1.8.2.3