SHA256
1
0
forked from pool/glibc

Accepting request 512670 from home:Andreas_Schwab:Factory

- Update to glibc-2.25.90.20170720.gc771b59a24c0
  * A per-thread cache has been added to malloc
  * Unicode 10.0.0 Support
  * Improvements to the DNS stub resolver
  * New function reallocarray, which resizes an allocated block (like
    realloc) to the product of two sizes, with a guaranteed clean failure
    upon integer overflow in the multiplication
  * New wrappers for the Linux-specific system calls preadv2 and pwritev2
  * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
    create a new session ID for the spawned process
  * errno.h is now safe to use from C-preprocessed assembly language on all
    supported operating systems
  * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
    128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
    754-2008) and ISO/IEC TS 18661-3:2015
  * The synchronization that pthread_spin_unlock performs has been changed to
    now be equivalent to a C11 atomic store with release memory order to the
    spin lock's memory location
  * The DNS stub resolver no longer performs EDNS fallback
  * res_mkquery and res_nmkquery no longer support the IQUERY opcode
  * The _res_opcodes variable has been removed from libresolv
  * <string.h> no longer includes inline versions of any string functions,
    as this kind of optimization is better done by the compiler
  * The nonstandard header <xlocale.h> has been removed
  * The obsolete header <sys/ultrasound.h> has been removed
  * The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>
  * The obsolete function cfree has been removed
  * The stack_t type no longer has the name struct sigaltstack
  * The ucontext_t type no longer has the name struct ucontext
  * On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been

OBS-URL: https://build.opensuse.org/request/show/512670
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=467
This commit is contained in:
Andreas Schwab 2017-07-26 15:08:57 +00:00 committed by Git OBS Bridge
parent bb22c43d13
commit 7864f220da
20 changed files with 187 additions and 829 deletions

View File

@ -18,7 +18,7 @@ Index: glibc-2.19/stdlib/abort.c
struct abort_msg_s *__abort_msg __attribute__ ((nocommon));
libc_hidden_def (__abort_msg)
@@ -66,16 +63,8 @@ abort (void)
__sigprocmask (SIG_UNBLOCK, &sigs, (sigset_t *) NULL);
__sigprocmask (SIG_UNBLOCK, &sigs, 0);
}
- /* Flush all streams. We cannot close them now because the user

View File

@ -19,9 +19,9 @@ Index: glibc-2.22/posix/Makefile
tst-pathconf tst-getaddrinfo4 tst-rxspencer-no-utf8 \
tst-fnmatch3 bug-regex36 tst-getaddrinfo5 \
+ tst-fnmatch4 tst-fnmatch5 \
tst-posix_spawn-fd \
tst-posix_fadvise tst-posix_fadvise64
xtests := bug-ga2
tst-posix_spawn-fd tst-posix_spawn-setsid \
tst-posix_fadvise tst-posix_fadvise64 \
tst-sysconf-empty-chroot
Index: glibc-2.22/posix/fnmatch.c
===================================================================
--- glibc-2.22.orig/posix/fnmatch.c

View File

@ -1,18 +0,0 @@
2017-03-31 Slava Barinov <v.barinov@samsung.com>
[BZ #21289]
* io/fts.h (fts_set): Replace __REDIRECT with __REDIRECT_NTH.
Index: glibc-2.25/io/fts.h
===================================================================
--- glibc-2.25.orig/io/fts.h
+++ glibc-2.25/io/fts.h
@@ -193,7 +193,7 @@ FTS *__REDIRECT (fts_open, (char * const
int (*)(const FTSENT **, const FTSENT **)),
fts64_open);
FTSENT *__REDIRECT (fts_read, (FTS *), fts64_read);
-int __REDIRECT (fts_set, (FTS *, FTSENT *, int), fts64_set) __THROW;
+int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int), fts64_set);
# else
# define fts_children fts64_children
# define fts_close fts64_close

View File

@ -1,82 +0,0 @@
For details see:
http://sourceware.org/bugzilla/show_bug.cgi?id=5379
Index: glibc-2.20/sunrpc/clnt_udp.c
===================================================================
--- glibc-2.20.orig/sunrpc/clnt_udp.c
+++ glibc-2.20/sunrpc/clnt_udp.c
@@ -308,6 +308,7 @@ clntudp_call (cl, proc, xargs, argsp, xr
XDR *xdrs;
int outlen = 0;
int inlen;
+ int pollresult;
socklen_t fromlen;
struct pollfd fd;
int milliseconds = (cu->cu_wait.tv_sec * 1000) +
@@ -378,37 +379,39 @@ send_again:
anyup = 0;
for (;;)
{
- switch (__poll (&fd, 1, milliseconds))
+ switch (pollresult = __poll (&fd, 1, milliseconds))
{
-
case 0:
- if (anyup == 0)
+ case -1:
+ if (pollresult == 0 || errno == EINTR)
{
- anyup = is_network_up (cu->cu_sock);
- if (!anyup)
- return (cu->cu_error.re_status = RPC_CANTRECV);
+ if (anyup == 0)
+ {
+ anyup = is_network_up (cu->cu_sock);
+ if (!anyup)
+ return (cu->cu_error.re_status = RPC_CANTRECV);
+ }
+
+ time_waited.tv_sec += cu->cu_wait.tv_sec;
+ time_waited.tv_usec += cu->cu_wait.tv_usec;
+ while (time_waited.tv_usec >= 1000000)
+ {
+ time_waited.tv_sec++;
+ time_waited.tv_usec -= 1000000;
+ }
+ if ((time_waited.tv_sec < timeout.tv_sec) ||
+ ((time_waited.tv_sec == timeout.tv_sec) &&
+ (time_waited.tv_usec < timeout.tv_usec)))
+ {
+ if (pollresult == 0)
+ goto send_again;
+ else
+ continue;
+ }
+ return (cu->cu_error.re_status = RPC_TIMEDOUT);
}
- time_waited.tv_sec += cu->cu_wait.tv_sec;
- time_waited.tv_usec += cu->cu_wait.tv_usec;
- while (time_waited.tv_usec >= 1000000)
- {
- time_waited.tv_sec++;
- time_waited.tv_usec -= 1000000;
- }
- if ((time_waited.tv_sec < timeout.tv_sec) ||
- ((time_waited.tv_sec == timeout.tv_sec) &&
- (time_waited.tv_usec < timeout.tv_usec)))
- goto send_again;
- return (cu->cu_error.re_status = RPC_TIMEDOUT);
-
- /*
- * buggy in other cases because time_waited is not being
- * updated.
- */
- case -1:
- if (errno == EINTR)
- continue;
+ /* errno != EINTR */
cu->cu_error.re_errno = errno;
return (cu->cu_error.re_status = RPC_CANTRECV);
}

View File

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

View File

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

View File

@ -1,10 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQEcBAABAgAGBQJYl08CAAoJEHnEPfvxzyGHhWcH/2eIspxugXwMnM0YZm3fkzji
yJpu19zpYvfap+tTXJGiY/P6UrJSqHUCSssxWyWJQAbOov40IT/ySSg3DyWhyxra
6HTTOwjIGz/9KQwVdzm79LA+YhsOauowvdiYCS6XnTQbPMc7zBDsOIEAzp+vXNdl
KIzIe7XzUJnK9kl6oqBzXuzdA4jjjzZ2jqyMOwRypipkAXu7OgXO7TiEdN149eSs
2Owodmw9epP1omEK1KLo0N9QsG/+ioaHNfldtWzWNvxuRigAnwaaJTy5zVG7xJ45
xVfsXaZQKFt4KPep1GF5jaZ30TWTvt5gyjOBiZa/+UfvEOXOt0ox/BB8ydlV/eg=
=HMRX
-----END PGP SIGNATURE-----

View File

@ -1,121 +0,0 @@
From libc-alpha-return-22754-pasky=ucw.cz@sourceware.org Tue Mar 16 00:47:00 2010
Return-Path: <libc-alpha-return-22754-pasky=ucw.cz@sourceware.org>
X-Original-To: pasky@pasky.or.cz
Delivered-To: pasky@pasky.or.cz
Received: from nikam.ms.mff.cuni.cz (nikam-dmz.ms.mff.cuni.cz [195.113.20.16])
by machine.or.cz (Postfix) with ESMTPS id C1B8586202A
for <pasky@pasky.or.cz>; Tue, 16 Mar 2010 00:47:00 +0100 (CET)
Received: by nikam.ms.mff.cuni.cz (Postfix)
id 9CDEC9AC7A4; Tue, 16 Mar 2010 00:47:00 +0100 (CET)
Delivered-To: pasky@kam.mff.cuni.cz
Received: from jabberwock.ucw.cz (jabberwock.ucw.cz [89.250.246.4])
by nikam.ms.mff.cuni.cz (Postfix) with ESMTP id 99F0E9AC77B
for <pasky@kam.mff.cuni.cz>; Tue, 16 Mar 2010 00:47:00 +0100 (CET)
Received: from sourceware.org (server1.sourceware.org [209.132.180.131])
by jabberwock.ucw.cz (Postfix) with SMTP id 14E1ACF040
for <pasky@ucw.cz>; Tue, 16 Mar 2010 00:46:59 +0100 (CET)
Received: (qmail 18956 invoked by alias); 15 Mar 2010 23:46:58 -0000
Delivered-To: moderator for libc-alpha@sourceware.org
Received: (qmail 15843 invoked by uid 22791); 15 Mar 2010 17:23:15 -0000
X-SWARE-Spam-Status: No, hits=-2.6 required=5.0
tests=BAYES_00
X-Spam-Check-By: sourceware.org
Message-ID: <4B9E6CFA.7020002@riot.org>
Date: Mon, 15 Mar 2010 18:23:06 +0100
From: Sebastian Kienzl <seb@riot.org>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: libc-alpha@sourceware.org
Subject: Reloading of /etc/resolv.conf
Content-Type: multipart/mixed;
boundary="------------060407080409020101000002"
Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm
Precedence: bulk
List-Id: <libc-alpha.sourceware.org>
List-Unsubscribe: <mailto:libc-alpha-unsubscribe-pasky=ucw.cz@sourceware.org>
List-Subscribe: <mailto:libc-alpha-subscribe@sourceware.org>
List-Archive: <http://sourceware.org/ml/libc-alpha/>
List-Post: <mailto:libc-alpha@sourceware.org>
List-Help: <mailto:libc-alpha-help@sourceware.org>, <http://sourceware.org/ml/#faqs>
Sender: libc-alpha-owner@sourceware.org
Delivered-To: mailing list libc-alpha@sourceware.org
This is a multi-part message in MIME format.
--------------060407080409020101000002
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Hello!
There's a patch in the wild against the resolver which makes it reload
/etc/resolv.conf on change, see
http://sources.redhat.com/ml/libc-alpha/2004-09/msg00130.html
However, this patch actually doesn't work properly for multi-threaded
programs, as only one thread will notice the change and refresh its
resolver state. I've attached a proper patch. It's for 2.5 but it should
work with current versions, too.
Even though the patch may not be interesting for upstream, I decided to
let you know about this problem, since the mentioned patch seems to be
used by at least Debian and Ubuntu.
Regards,
Seb.
--------------060407080409020101000002
Content-Type: text/plain;
name="glibc-2.5-resolvconf.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="glibc-2.5-resolvconf.patch"
Index: glibc-2.17.90/resolv/res_libc.c
===================================================================
--- glibc-2.17.90.orig/resolv/res_libc.c
+++ glibc-2.17.90/resolv/res_libc.c
@@ -22,6 +22,7 @@
#include <arpa/nameser.h>
#include <resolv.h>
#include <libc-lock.h>
+#include <sys/stat.h>
extern unsigned long long int __res_initstamp attribute_hidden;
/* We have atomic increment operations on 64-bit platforms. */
@@ -89,12 +89,34 @@ res_init(void) {
return (__res_vinit(&_res, 1));
}
+static time_t resconf_mtime;
+__libc_lock_define_initialized (static, resconf_mtime_lock);
+
+/* Check if the modification time of resolv.conf has changed.
+ If so, have all threads re-initialize their resolver states */
+static void
+__res_check_resconf (void)
+{
+ struct stat statbuf;
+ if (stat (_PATH_RESCONF, &statbuf) == 0) {
+ __libc_lock_lock (resconf_mtime_lock);
+ if (statbuf.st_mtime != resconf_mtime) {
+ resconf_mtime = statbuf.st_mtime;
+ atomicinclock (lock);
+ atomicinc (__res_initstamp);
+ atomicincunlock (lock);
+ }
+ __libc_lock_unlock (resconf_mtime_lock);
+ }
+}
+
/* Initialize resp if RES_INIT is not yet set or if res_init in some other
thread requested re-initializing. */
int
__res_maybe_init (res_state resp, int preinit)
{
if (resp->options & RES_INIT) {
+ __res_check_resconf ();
if (__res_initstamp != resp->_u._ext.initstamp) {
if (resp->nscount > 0)
__res_iclose (resp, true);

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de
- Update to glibc-2.25.90.20170720.gc771b59a24c0
* A per-thread cache has been added to malloc
* Unicode 10.0.0 Support
* Improvements to the DNS stub resolver
* New function reallocarray, which resizes an allocated block (like
realloc) to the product of two sizes, with a guaranteed clean failure
upon integer overflow in the multiplication
* New wrappers for the Linux-specific system calls preadv2 and pwritev2
* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
create a new session ID for the spawned process
* errno.h is now safe to use from C-preprocessed assembly language on all
supported operating systems
* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
754-2008) and ISO/IEC TS 18661-3:2015
* The synchronization that pthread_spin_unlock performs has been changed to
now be equivalent to a C11 atomic store with release memory order to the
spin lock's memory location
* The DNS stub resolver no longer performs EDNS fallback
* res_mkquery and res_nmkquery no longer support the IQUERY opcode
* The _res_opcodes variable has been removed from libresolv
* <string.h> no longer includes inline versions of any string functions,
as this kind of optimization is better done by the compiler
* The nonstandard header <xlocale.h> has been removed
* The obsolete header <sys/ultrasound.h> has been removed
* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>
* The obsolete function cfree has been removed
* The stack_t type no longer has the name struct sigaltstack
* The ucontext_t type no longer has the name struct ucontext
* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
synced with the kernel
* Linux kernel 3.2 or later is required at runtime, on all architectures
supported by that kernel
* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
to avoid fragmentation-based spoofing attacks
* fate#322258, fate#321513, fate#322453
- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch,
ld-hwcap-mask-suid.patch, ld-library-path-suid.patch,
sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch,
tunables-bigendian.patch: Removed
-------------------------------------------------------------------
Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de

View File

@ -21,7 +21,7 @@
%bcond_with fast_build
%define crypt_bf_version 1.3
%define build_snapshot 0
%define build_snapshot 1
%define flavor testsuite
@ -116,11 +116,20 @@ BuildArch: i686
%define powerpc_optimize_cpu_power7 0
%define powerpc_optimize_cpu_cell 0
%endif # ppc, ppc64
# 3.0 is the SLES 11 SP3 kernel
# 3.1 is the openSUSE 12.1 kernel
%define enablekernel 3.0
# glibc requires at least kernel 3.2
%define enablekernel 3.2
# some architectures need a newer kernel
%ifarch ppc64le
%define enablekernel 3.10
%endif
%ifarch aarch64
%define enablekernel 3.7
%endif
%ifarch ia64
%define enablekernel 3.2.18
%endif
Version: 2.25
Version: 2.25.90.20170720.gc771b59a24c0
Release: 0
%if !%{build_snapshot}
%define git_id db0242e30234
@ -245,10 +254,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch
### Broken patches in glibc that we revert for now:
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
Patch300: glibc-resolv-reload.diff
# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de
Patch301: glibc-2.2-sunrpc.diff
# PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv
Patch304: glibc-resolv-mdnshint.diff
# PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719
@ -257,20 +262,6 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109)
Patch1000: tunables-bigendian.patch
# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182)
Patch1001: i686-memchr-sse.patch
# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115)
Patch1002: sunrpc-use-after-free.patch
# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing
Patch1003: test-math-vector-sincos-aliasing.patch
# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289)
Patch1004: fts-symbol-redirect.patch
# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209)
Patch1005: ld-hwcap-mask-suid.patch
# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624)
Patch1006: ld-library-path-suid.patch
###
# Patches awaiting upstream approval
@ -497,19 +488,9 @@ rm nscd/s-stamp
%patch104 -p1
%patch105 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch2000 -p1
%patch2001 -p1
%patch2002 -p1
@ -681,7 +662,8 @@ configure_and_build_glibc() {
--enable-tunables \
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \
--enable-bind-now --enable-obsolete-rpc \
--enable-bind-now \
--enable-obsolete-rpc --enable-obsolete-nsl \
--disable-timezone-tools
# Should we enable --enable-systemtap?
# Should we enable --enable-nss-crypt to build use freebl3 hash functions?

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de
- Update to glibc-2.25.90.20170720.gc771b59a24c0
* A per-thread cache has been added to malloc
* Unicode 10.0.0 Support
* Improvements to the DNS stub resolver
* New function reallocarray, which resizes an allocated block (like
realloc) to the product of two sizes, with a guaranteed clean failure
upon integer overflow in the multiplication
* New wrappers for the Linux-specific system calls preadv2 and pwritev2
* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
create a new session ID for the spawned process
* errno.h is now safe to use from C-preprocessed assembly language on all
supported operating systems
* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
754-2008) and ISO/IEC TS 18661-3:2015
* The synchronization that pthread_spin_unlock performs has been changed to
now be equivalent to a C11 atomic store with release memory order to the
spin lock's memory location
* The DNS stub resolver no longer performs EDNS fallback
* res_mkquery and res_nmkquery no longer support the IQUERY opcode
* The _res_opcodes variable has been removed from libresolv
* <string.h> no longer includes inline versions of any string functions,
as this kind of optimization is better done by the compiler
* The nonstandard header <xlocale.h> has been removed
* The obsolete header <sys/ultrasound.h> has been removed
* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>
* The obsolete function cfree has been removed
* The stack_t type no longer has the name struct sigaltstack
* The ucontext_t type no longer has the name struct ucontext
* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
synced with the kernel
* Linux kernel 3.2 or later is required at runtime, on all architectures
supported by that kernel
* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
to avoid fragmentation-based spoofing attacks
* fate#322258, fate#321513, fate#322453
- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch,
ld-hwcap-mask-suid.patch, ld-library-path-suid.patch,
sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch,
tunables-bigendian.patch: Removed
-------------------------------------------------------------------
Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de

View File

@ -21,7 +21,7 @@
%bcond_with fast_build
%define crypt_bf_version 1.3
%define build_snapshot 0
%define build_snapshot 1
%define flavor utils
@ -117,11 +117,20 @@ BuildArch: i686
%define powerpc_optimize_cpu_power7 0
%define powerpc_optimize_cpu_cell 0
%endif # ppc, ppc64
# 3.0 is the SLES 11 SP3 kernel
# 3.1 is the openSUSE 12.1 kernel
%define enablekernel 3.0
# glibc requires at least kernel 3.2
%define enablekernel 3.2
# some architectures need a newer kernel
%ifarch ppc64le
%define enablekernel 3.10
%endif
%ifarch aarch64
%define enablekernel 3.7
%endif
%ifarch ia64
%define enablekernel 3.2.18
%endif
Version: 2.25
Version: 2.25.90.20170720.gc771b59a24c0
Release: 0
%if !%{build_snapshot}
%define git_id db0242e30234
@ -246,10 +255,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch
### Broken patches in glibc that we revert for now:
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
Patch300: glibc-resolv-reload.diff
# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de
Patch301: glibc-2.2-sunrpc.diff
# PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv
Patch304: glibc-resolv-mdnshint.diff
# PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719
@ -258,20 +263,6 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109)
Patch1000: tunables-bigendian.patch
# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182)
Patch1001: i686-memchr-sse.patch
# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115)
Patch1002: sunrpc-use-after-free.patch
# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing
Patch1003: test-math-vector-sincos-aliasing.patch
# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289)
Patch1004: fts-symbol-redirect.patch
# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209)
Patch1005: ld-hwcap-mask-suid.patch
# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624)
Patch1006: ld-library-path-suid.patch
###
# Patches awaiting upstream approval
@ -498,19 +489,9 @@ rm nscd/s-stamp
%patch104 -p1
%patch105 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch2000 -p1
%patch2001 -p1
%patch2002 -p1
@ -682,7 +663,8 @@ configure_and_build_glibc() {
--enable-tunables \
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \
--enable-bind-now --enable-obsolete-rpc \
--enable-bind-now \
--enable-obsolete-rpc --enable-obsolete-nsl \
--disable-timezone-tools
# Should we enable --enable-systemtap?
# Should we enable --enable-nss-crypt to build use freebl3 hash functions?

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de
- Update to glibc-2.25.90.20170720.gc771b59a24c0
* A per-thread cache has been added to malloc
* Unicode 10.0.0 Support
* Improvements to the DNS stub resolver
* New function reallocarray, which resizes an allocated block (like
realloc) to the product of two sizes, with a guaranteed clean failure
upon integer overflow in the multiplication
* New wrappers for the Linux-specific system calls preadv2 and pwritev2
* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
create a new session ID for the spawned process
* errno.h is now safe to use from C-preprocessed assembly language on all
supported operating systems
* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
754-2008) and ISO/IEC TS 18661-3:2015
* The synchronization that pthread_spin_unlock performs has been changed to
now be equivalent to a C11 atomic store with release memory order to the
spin lock's memory location
* The DNS stub resolver no longer performs EDNS fallback
* res_mkquery and res_nmkquery no longer support the IQUERY opcode
* The _res_opcodes variable has been removed from libresolv
* <string.h> no longer includes inline versions of any string functions,
as this kind of optimization is better done by the compiler
* The nonstandard header <xlocale.h> has been removed
* The obsolete header <sys/ultrasound.h> has been removed
* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>
* The obsolete function cfree has been removed
* The stack_t type no longer has the name struct sigaltstack
* The ucontext_t type no longer has the name struct ucontext
* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
synced with the kernel
* Linux kernel 3.2 or later is required at runtime, on all architectures
supported by that kernel
* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
to avoid fragmentation-based spoofing attacks
* fate#322258, fate#321513, fate#322453
- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch,
ld-hwcap-mask-suid.patch, ld-library-path-suid.patch,
sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch,
tunables-bigendian.patch: Removed
-------------------------------------------------------------------
Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de

View File

@ -21,7 +21,7 @@
%bcond_with fast_build
%define crypt_bf_version 1.3
%define build_snapshot 0
%define build_snapshot 1
# INCLUDE glibc$flavor.spec.in
%ifarch i686
@ -122,11 +122,20 @@ BuildArch: i686
%define powerpc_optimize_cpu_power7 0
%define powerpc_optimize_cpu_cell 0
%endif # ppc, ppc64
# 3.0 is the SLES 11 SP3 kernel
# 3.1 is the openSUSE 12.1 kernel
%define enablekernel 3.0
# glibc requires at least kernel 3.2
%define enablekernel 3.2
# some architectures need a newer kernel
%ifarch ppc64le
%define enablekernel 3.10
%endif
%ifarch aarch64
%define enablekernel 3.7
%endif
%ifarch ia64
%define enablekernel 3.2.18
%endif
Version: 2.25
Version: 2.25.90.20170720.gc771b59a24c0
Release: 0
%if !%{build_snapshot}
%define git_id db0242e30234
@ -251,10 +260,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch
### Broken patches in glibc that we revert for now:
### Network related patches
# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
Patch300: glibc-resolv-reload.diff
# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de
Patch301: glibc-2.2-sunrpc.diff
# PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv
Patch304: glibc-resolv-mdnshint.diff
# PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719
@ -263,20 +268,6 @@ Patch306: glibc-fix-double-loopback.diff
###
# Patches from upstream
###
# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109)
Patch1000: tunables-bigendian.patch
# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182)
Patch1001: i686-memchr-sse.patch
# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115)
Patch1002: sunrpc-use-after-free.patch
# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing
Patch1003: test-math-vector-sincos-aliasing.patch
# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289)
Patch1004: fts-symbol-redirect.patch
# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209)
Patch1005: ld-hwcap-mask-suid.patch
# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624)
Patch1006: ld-library-path-suid.patch
###
# Patches awaiting upstream approval
@ -503,19 +494,9 @@ rm nscd/s-stamp
%patch104 -p1
%patch105 -p1
%patch300 -p1
%patch301 -p1
%patch304 -p1
%patch306 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch1005 -p1
%patch1006 -p1
%patch2000 -p1
%patch2001 -p1
%patch2002 -p1
@ -687,7 +668,8 @@ configure_and_build_glibc() {
--enable-tunables \
--enable-kernel=%{enablekernel} \
--with-bugurl=http://bugs.opensuse.org \
--enable-bind-now --enable-obsolete-rpc \
--enable-bind-now \
--enable-obsolete-rpc --enable-obsolete-nsl \
--disable-timezone-tools
# Should we enable --enable-systemtap?
# Should we enable --enable-nss-crypt to build use freebl3 hash functions?

View File

@ -1,45 +0,0 @@
2017-03-29 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ# 21182]
* string/test-memchr.c (do_test): Add BZ#21182 checks for address
near end of a page.
* sysdeps/i386/i686/multiarch/memchr-sse2.S (__memchr): Fix
overflow calculation.
Index: glibc-2.25/string/test-memchr.c
===================================================================
--- glibc-2.25.orig/string/test-memchr.c
+++ glibc-2.25/string/test-memchr.c
@@ -208,6 +208,12 @@ test_main (void)
do_test (0, i, i + 1, i + 1, 0);
}
+ /* BZ#21182 - wrong overflow calculation for i686 implementation
+ with address near end of the page. */
+ for (i = 2; i < 16; ++i)
+ /* page_size is in fact getpagesize() * 2. */
+ do_test (page_size / 2 - i, i, i, 1, 0x9B);
+
do_random_tests ();
return ret;
}
Index: glibc-2.25/sysdeps/i386/i686/multiarch/memchr-sse2.S
===================================================================
--- glibc-2.25.orig/sysdeps/i386/i686/multiarch/memchr-sse2.S
+++ glibc-2.25/sysdeps/i386/i686/multiarch/memchr-sse2.S
@@ -117,7 +117,6 @@ L(crosscache):
# ifndef USE_AS_RAWMEMCHR
jnz L(match_case2_prolog1)
- lea -16(%edx), %edx
/* Calculate the last acceptable address and check for possible
addition overflow by using satured math:
edx = ecx + edx
@@ -125,6 +124,7 @@ L(crosscache):
add %ecx, %edx
sbb %eax, %eax
or %eax, %edx
+ sub $16, %edx
jbe L(return_null)
lea 16(%edi), %edi
# else

View File

@ -1,33 +0,0 @@
2017-03-07 Siddhesh Poyarekar <siddhesh@sourceware.org>
[BZ #21209]
* elf/rtld.c (process_envvars): Ignore LD_HWCAP_MASK for
AT_SECURE processes.
* sysdeps/generic/unsecvars.h: Add LD_HWCAP_MASK.
Index: glibc-2.25/elf/rtld.c
===================================================================
--- glibc-2.25.orig/elf/rtld.c
+++ glibc-2.25/elf/rtld.c
@@ -2450,7 +2450,8 @@ process_envvars (enum mode *modep)
case 10:
/* Mask for the important hardware capabilities. */
- if (memcmp (envline, "HWCAP_MASK", 10) == 0)
+ if (!__libc_enable_secure
+ && memcmp (envline, "HWCAP_MASK", 10) == 0)
GLRO(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL,
0, 0);
break;
Index: glibc-2.25/sysdeps/generic/unsecvars.h
===================================================================
--- glibc-2.25.orig/sysdeps/generic/unsecvars.h
+++ glibc-2.25/sysdeps/generic/unsecvars.h
@@ -16,6 +16,7 @@
"LD_DEBUG\0" \
"LD_DEBUG_OUTPUT\0" \
"LD_DYNAMIC_WEAK\0" \
+ "LD_HWCAP_MASK\0" \
"LD_LIBRARY_PATH\0" \
"LD_ORIGIN_PATH\0" \
"LD_PRELOAD\0" \

View File

@ -1,158 +0,0 @@
Index: glibc-2.25/elf/rtld.c
===================================================================
--- glibc-2.25.orig/elf/rtld.c
+++ glibc-2.25/elf/rtld.c
@@ -716,6 +716,57 @@ static const char *preloadlist attribute
/* Nonzero if information about versions has to be printed. */
static int version_info attribute_relro;
+/* Check that AT_SECURE=0, or that the passed name does not contain
+ directories and is not overly long. */
+static bool
+dso_name_valid_for_suid (const char *p)
+{
+ if (__builtin_expect (__libc_enable_secure, 0))
+ {
+ /* Ignore pathnames with directories for AT_SECURE=1
+ programs, and also skip overlong names. */
+ size_t len = strlen (p);
+ if (len >= NAME_MAX || memchr (p, '/', len) != NULL)
+ return false;
+ }
+ return true;
+}
+
+/* The LD_PRELOAD environment variable gives list of libraries
+ separated by white space or colons that are loaded before the
+ executable's dependencies and prepended to the global scope list.
+ (If the binary is running setuid all elements containing a '/' are
+ ignored since it is insecure.) Return the number of preloads
+ performed. */
+static unsigned int
+handle_ld_preload (const char *preloadlist, struct link_map *main_map)
+{
+ unsigned int npreloads = 0;
+ const char *p = preloadlist;
+ char fname[PATH_MAX];
+
+ while (*p != '\0')
+ {
+ /* Split preload list at space/colon. */
+ size_t len = strcspn (p, " :");
+ if (len > 0 && len < PATH_MAX)
+ {
+ memcpy (fname, p, len);
+ fname[len] = '\0';
+ if (dso_name_valid_for_suid (fname))
+ npreloads += do_preload (fname, main_map, "LD_PRELOAD");
+ }
+
+ /* Skip over the substring and the following delimiter. */
+ p += len;
+ if (*p != '\0')
+ ++p;
+ }
+ return npreloads;
+}
+
+
+
static void
dl_main (const ElfW(Phdr) *phdr,
ElfW(Word) phnum,
@@ -1462,23 +1513,8 @@ ERROR: ld.so: object '%s' cannot be load
if (__glibc_unlikely (preloadlist != NULL))
{
- /* The LD_PRELOAD environment variable gives list of libraries
- separated by white space or colons that are loaded before the
- executable's dependencies and prepended to the global scope
- list. If the binary is running setuid all elements
- containing a '/' are ignored since it is insecure. */
- char *list = strdupa (preloadlist);
- char *p;
-
HP_TIMING_NOW (start);
-
- /* Prevent optimizing strsep. Speed is not important here. */
- while ((p = (strsep) (&list, " :")) != NULL)
- if (p[0] != '\0'
- && (__builtin_expect (! __libc_enable_secure, 1)
- || strchr (p, '/') == NULL))
- npreloads += do_preload (p, main_map, "LD_PRELOAD");
-
+ npreloads += handle_ld_preload (preloadlist, main_map);
HP_TIMING_NOW (stop);
HP_TIMING_DIFF (diff, start, stop);
HP_TIMING_ACCUM_NT (load_time, diff);
@@ -2340,9 +2376,7 @@ process_dl_audit (char *str)
char *p;
while ((p = (strsep) (&str, ":")) != NULL)
- if (p[0] != '\0'
- && (__builtin_expect (! __libc_enable_secure, 1)
- || strchr (p, '/') == NULL))
+ if (p[0] != '\0' && dso_name_valid_for_suid (p))
{
/* This is using the local malloc, not the system malloc. The
memory can never be freed. */
@@ -2372,6 +2406,7 @@ process_envvars (enum mode *modep)
char *envline;
enum mode mode = normal;
char *debug_output = NULL;
+ char *ld_audit = NULL;
/* This is the default place for profiling data file. */
GLRO(dl_profile_output)
@@ -2406,7 +2441,7 @@ process_envvars (enum mode *modep)
break;
}
if (memcmp (envline, "AUDIT", 5) == 0)
- process_dl_audit (&envline[6]);
+ ld_audit = &envline[6];
break;
case 7:
@@ -2465,7 +2500,8 @@ process_envvars (enum mode *modep)
case 12:
/* The library search path. */
- if (memcmp (envline, "LIBRARY_PATH", 12) == 0)
+ if (!__libc_enable_secure
+ && memcmp (envline, "LIBRARY_PATH", 12) == 0)
{
library_path = &envline[13];
break;
@@ -2532,6 +2568,12 @@ process_envvars (enum mode *modep)
}
}
+ /* Even if LD_AUDIT occurs multiple times in the environment
+ process_dl_audit should only be called once to avoid polluting the
+ heap with unused copies of the value. */
+ if (ld_audit != NULL)
+ process_dl_audit (ld_audit);
+
/* The caller wants this information. */
*modep = mode;
Index: glibc-2.25/sysdeps/i386/i686/multiarch/strcspn-c.c
===================================================================
--- glibc-2.25.orig/sysdeps/i386/i686/multiarch/strcspn-c.c
+++ glibc-2.25/sysdeps/i386/i686/multiarch/strcspn-c.c
@@ -1,2 +1,4 @@
-#define __strcspn_sse2 __strcspn_ia32
-#include <sysdeps/x86_64/multiarch/strcspn-c.c>
+#if IS_IN (libc)
+# define __strcspn_sse2 __strcspn_ia32
+# include <sysdeps/x86_64/multiarch/strcspn-c.c>
+#endif
Index: glibc-2.25/sysdeps/i386/i686/multiarch/varshift.c
===================================================================
--- glibc-2.25.orig/sysdeps/i386/i686/multiarch/varshift.c
+++ glibc-2.25/sysdeps/i386/i686/multiarch/varshift.c
@@ -1 +1,3 @@
-#include <sysdeps/x86_64/multiarch/varshift.c>
+#if IS_IN (libc)
+# include <sysdeps/x86_64/multiarch/varshift.c>
+#endif

View File

@ -1,111 +0,0 @@
2017-02-27 Florian Weimer <fweimer@redhat.com>
[BZ #21115]
* sunrpc/clnt_udp.c (clntudp_call): Free ancillary data later.
* sunrpc/Makefile (tests): Add tst-udp-error.
(tst-udp-error): Link against libc.so explicitly.
* sunrpc/tst-udp-error: New file.
Index: glibc-2.25/sunrpc/Makefile
===================================================================
--- glibc-2.25.orig/sunrpc/Makefile
+++ glibc-2.25/sunrpc/Makefile
@@ -93,7 +93,7 @@ rpcgen-objs = rpc_main.o rpc_hout.o rpc_
extra-objs = $(rpcgen-objs) $(addprefix cross-,$(rpcgen-objs))
others += rpcgen
-tests = tst-xdrmem tst-xdrmem2 test-rpcent
+tests = tst-xdrmem tst-xdrmem2 test-rpcent tst-udp-error
xtests := tst-getmyaddr
ifeq ($(have-thread-library),yes)
@@ -155,6 +155,7 @@ BUILD_CPPFLAGS += $(sunrpc-CPPFLAGS)
$(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so
+$(objpfx)tst-udp-error: $(common-objpfx)linkobj/libc.so
$(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs))
Index: glibc-2.25/sunrpc/clnt_udp.c
===================================================================
--- glibc-2.25.orig/sunrpc/clnt_udp.c
+++ glibc-2.25/sunrpc/clnt_udp.c
@@ -424,9 +424,9 @@ send_again:
cmsg = CMSG_NXTHDR (&msg, cmsg))
if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_RECVERR)
{
- free (cbuf);
e = (struct sock_extended_err *) CMSG_DATA(cmsg);
cu->cu_error.re_errno = e->ee_errno;
+ free (cbuf);
return (cu->cu_error.re_status = RPC_CANTRECV);
}
free (cbuf);
Index: glibc-2.25/sunrpc/tst-udp-error.c
===================================================================
--- /dev/null
+++ glibc-2.25/sunrpc/tst-udp-error.c
@@ -0,0 +1,62 @@
+/* Check for use-after-free in clntudp_call (bug 21115).
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <netinet/in.h>
+#include <rpc/clnt.h>
+#include <rpc/svc.h>
+#include <support/check.h>
+#include <support/namespace.h>
+#include <support/xsocket.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+ support_become_root ();
+ support_enter_network_namespace ();
+
+ /* Obtain a likely-unused port number. */
+ struct sockaddr_in sin =
+ {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = htonl (INADDR_LOOPBACK),
+ };
+ {
+ int fd = xsocket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+ xbind (fd, (struct sockaddr *) &sin, sizeof (sin));
+ socklen_t sinlen = sizeof (sin);
+ xgetsockname (fd, (struct sockaddr *) &sin, &sinlen);
+ /* Close the socket, so that we will receive an error below. */
+ close (fd);
+ }
+
+ int sock = RPC_ANYSOCK;
+ CLIENT *clnt = clntudp_create
+ (&sin, 1, 2, (struct timeval) { 1, 0 }, &sock);
+ TEST_VERIFY_EXIT (clnt != NULL);
+ TEST_VERIFY (clnt_call (clnt, 3,
+ (xdrproc_t) xdr_void, NULL,
+ (xdrproc_t) xdr_void, NULL,
+ ((struct timeval) { 3, 0 }))
+ == RPC_CANTRECV);
+ clnt_destroy (clnt);
+
+ return 0;
+}
+
+#include <support/test-driver.c>

View File

@ -1,69 +0,0 @@
2017-03-15 Joseph Myers <joseph@codesourcery.com>
* sysdeps/x86/fpu/test-math-vector-sincos.h (INIT_VEC_PTRS_LOOP):
Use a union when storing pointers.
(VECTOR_WRAPPER_fFF_2): Do not take address of integer vector and
cast result when passing to INIT_VEC_PTRS_LOOP.
(VECTOR_WRAPPER_fFF_3): Likewise.
(VECTOR_WRAPPER_fFF_4): Likewise.
Index: glibc-2.25/sysdeps/x86/fpu/test-math-vector-sincos.h
===================================================================
--- glibc-2.25.orig/sysdeps/x86/fpu/test-math-vector-sincos.h
+++ glibc-2.25/sysdeps/x86/fpu/test-math-vector-sincos.h
@@ -17,14 +17,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#define INIT_VEC_PTRS_LOOP(vec, val, len) \
- do \
- { \
- for (i = 0; i < len; i++) \
- { \
- vec[i] = &val[i]; \
- } \
- } \
+#define INIT_VEC_PTRS_LOOP(vec, val, len) \
+ do \
+ { \
+ union { VEC_INT_TYPE v; __typeof__ ((val)[0]) *a[(len)]; } u; \
+ for (i = 0; i < len; i++) \
+ u.a[i] = &(val)[i]; \
+ (vec) = u.v; \
+ } \
while (0)
/* Wrapper for vector sincos/sincosf compatible with x86_64 and x32 variants
@@ -40,8 +40,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL
VEC_TYPE mx; \
VEC_INT_TYPE mr, mr1; \
INIT_VEC_LOOP (mx, x, VEC_LEN); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN); \
+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN); \
+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN); \
vector_func (mx, mr, mr1); \
TEST_VEC_LOOP (r_loc, VEC_LEN); \
TEST_VEC_LOOP (r1_loc, VEC_LEN); \
@@ -63,8 +63,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL
VEC_TYPE mx; \
VEC_INT_TYPE mr, mr1; \
INIT_VEC_LOOP (mx, x, VEC_LEN); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN/2); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN/2); \
+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN/2); \
+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN/2); \
vector_func (mx, mr, mr, mr1, mr1); \
TEST_VEC_LOOP (r_loc, VEC_LEN/2); \
TEST_VEC_LOOP (r1_loc, VEC_LEN/2); \
@@ -87,8 +87,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL
VEC_TYPE mx; \
VEC_INT_TYPE mr, mr1; \
INIT_VEC_LOOP (mx, x, VEC_LEN); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN/4); \
- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN/4); \
+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN/4); \
+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN/4); \
vector_func (mx, mr, mr, mr, mr, mr1, mr1, mr1, mr1); \
TEST_VEC_LOOP (r_loc, VEC_LEN/4); \
TEST_VEC_LOOP (r1_loc, VEC_LEN/4); \

View File

@ -1,73 +0,0 @@
2017-02-08 Siddhesh Poyarekar <siddhesh@sourceware.org>
[BZ #21109]
* elf/dl-tunable-types.h (tunable_callback_t): Accept
tunable_val_t as argument.
* elf/dl-tunables.c (__tunable_set_val): Add comment.
* malloc/arena.c (set_mallopt_check): Take tunable_val_t as
argument.
(DL_TUNABLE_CALLBACK_FNDECL): Likewise.
Index: glibc-2.25/elf/dl-tunable-types.h
===================================================================
--- glibc-2.25.orig/elf/dl-tunable-types.h
+++ glibc-2.25/elf/dl-tunable-types.h
@@ -21,8 +21,6 @@
# define _TUNABLE_TYPES_H_
#include <stddef.h>
-typedef void (*tunable_callback_t) (void *);
-
typedef enum
{
TUNABLE_TYPE_INT_32,
@@ -43,6 +41,8 @@ typedef union
const char *strval;
} tunable_val_t;
+typedef void (*tunable_callback_t) (tunable_val_t *);
+
/* Security level for tunables. This decides what to do with individual
tunables for AT_SECURE binaries. */
typedef enum
Index: glibc-2.25/elf/dl-tunables.c
===================================================================
--- glibc-2.25.orig/elf/dl-tunables.c
+++ glibc-2.25/elf/dl-tunables.c
@@ -455,6 +455,8 @@ __tunable_set_val (tunable_id_t id, void
if (cur->strval == NULL)
return;
+ /* Caller does not need the value, just call the callback with our tunable
+ value. */
if (valp == NULL)
goto cb;
Index: glibc-2.25/malloc/arena.c
===================================================================
--- glibc-2.25.orig/malloc/arena.c
+++ glibc-2.25/malloc/arena.c
@@ -212,9 +212,9 @@ __malloc_fork_unlock_child (void)
#if HAVE_TUNABLES
static inline int do_set_mallopt_check (int32_t value);
void
-DL_TUNABLE_CALLBACK (set_mallopt_check) (void *valp)
+DL_TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp)
{
- int32_t value = *(int32_t *) valp;
+ int32_t value = (int32_t) valp->numval;
do_set_mallopt_check (value);
if (check_action != 0)
__malloc_check_init ();
@@ -223,9 +223,9 @@ DL_TUNABLE_CALLBACK (set_mallopt_check)
# define DL_TUNABLE_CALLBACK_FNDECL(__name, __type) \
static inline int do_ ## __name (__type value); \
void \
-DL_TUNABLE_CALLBACK (__name) (void *valp) \
+DL_TUNABLE_CALLBACK (__name) (tunable_val_t *valp) \
{ \
- __type value = *(__type *) valp; \
+ __type value = (__type) (valp)->numval; \
do_ ## __name (value); \
}