aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2017-03-20 15:25:48 +0200
committerTimo Teräs <timo.teras@iki.fi>2017-03-21 08:15:29 +0200
commit1a4d299a0242a02aa0d4843dd9947d4187e70414 (patch)
tree524965445ca8c9eba7f425db6ffb2035d8025500 /main
parentc12931e8863fa9fddc90390db24a4a591f43043e (diff)
downloadaports-1a4d299a0242a02aa0d4843dd9947d4187e70414.tar.bz2
aports-1a4d299a0242a02aa0d4843dd9947d4187e70414.tar.xz
main/musl: cherry-pick upstream fixes
ldso changes (lazy emulation etc) are not stable yet, so it's are not included. the missing patch numbers are for those commits.
Diffstat (limited to 'main')
-rw-r--r--main/musl/0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch30
-rw-r--r--main/musl/0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch50
-rw-r--r--main/musl/0009-avoid-unbounded-strlen-in-gettext-functions.patch38
-rw-r--r--main/musl/0010-s390x-implement-dlsym.patch (renamed from main/musl/0007-add-s390x-dlsym.patch)6
-rw-r--r--main/musl/0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch40
-rw-r--r--main/musl/0012-allow-page-size-to-vary-on-arm.patch31
-rw-r--r--main/musl/0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch41
-rw-r--r--main/musl/0014-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch (renamed from main/musl/0008-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch)4
-rw-r--r--main/musl/0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch40
-rw-r--r--main/musl/0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch41
-rw-r--r--main/musl/0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch28
-rw-r--r--main/musl/0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch30
-rw-r--r--main/musl/0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch30
-rw-r--r--main/musl/0023-fix-one-byte-overflow-in-legacy-getpass-function.patch27
-rw-r--r--main/musl/0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch55
-rw-r--r--main/musl/0025-remove-unused-refcnt-field-for-shared-libraries.patch48
-rw-r--r--main/musl/0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch103
-rw-r--r--main/musl/0028-s390x-fix-fpreg_t-and-remove-unused-per_struct.patch (renamed from main/musl/0009-fix-fpreg_t-remove-unused-per_struct-s390x.patch)6
-rw-r--r--main/musl/0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch47
-rw-r--r--main/musl/APKBUILD46
20 files changed, 726 insertions, 15 deletions
diff --git a/main/musl/0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch b/main/musl/0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch
new file mode 100644
index 0000000000..bacb3bc8e8
--- /dev/null
+++ b/main/musl/0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch
@@ -0,0 +1,30 @@
+From 01e6bbece2bdcac243cdb8dff6916f2bb80a19e1 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Sun, 29 Jan 2017 00:11:23 -0500
+Subject: [PATCH] fix bindtextdomain logic error deactivating other domains
+
+this loop was only supposed to deactivate other bindings for the same
+text domain name, but due to copy-and-paste error, deactivated all
+other bindings.
+
+patch by He X.
+---
+ src/locale/dcngettext.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c
+index a5ff8475..e48c50f0 100644
+--- a/src/locale/dcngettext.c
++++ b/src/locale/dcngettext.c
+@@ -74,7 +74,7 @@ char *bindtextdomain(const char *domainname, const char *dirname)
+ a_store(&p->active, 1);
+
+ for (q=bindings; q; q=q->next) {
+- if (!strcmp(p->domainname, domainname) && q != p)
++ if (!strcmp(q->domainname, domainname) && q != p)
+ a_store(&q->active, 0);
+ }
+
+--
+2.11.1
+
diff --git a/main/musl/0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch b/main/musl/0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch
new file mode 100644
index 0000000000..8e0f33d6ce
--- /dev/null
+++ b/main/musl/0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch
@@ -0,0 +1,50 @@
+From dbbb3734d8c0176feabd6c46e2e85bbc3b8a60af Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Sun, 29 Jan 2017 11:14:00 -0500
+Subject: [PATCH] fix use of uninitialized pointer in gettext core
+
+the plural_rule field of allocated msgcat structures was assumed to be
+initially-null but was never initialized. for future-proofing, the
+nplurals field which was left uninitialized should also be cleared.
+
+likewise, in the binding structure, the active field could be used
+uninitialized by a technicality: the a_store which stores the initial
+value of 0 may be implemented as a cas operation, which reads the old
+value.
+
+rather than fixing these issues individually, just use calloc for both
+allocations. this does result in wasteful clearing of name buffers (up
+to NAME_MAX+PATH_MAX) before filling them, but since the size if
+bounded and the time is dominated by filesystem operations, it really
+doesn't matter; simplicity and future-proofing have more value here.
+
+modified from patch submitted by He X.
+---
+ src/locale/dcngettext.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c
+index e48c50f0..73a9fd70 100644
+--- a/src/locale/dcngettext.c
++++ b/src/locale/dcngettext.c
+@@ -57,7 +57,7 @@ char *bindtextdomain(const char *domainname, const char *dirname)
+ }
+
+ if (!p) {
+- p = malloc(sizeof *p + domlen + dirlen + 2);
++ p = calloc(sizeof *p + domlen + dirlen + 2, 1);
+ if (!p) {
+ UNLOCK(lock);
+ return 0;
+@@ -171,7 +171,7 @@ notrans:
+ size_t map_size;
+ const void *map = __map_file(name, &map_size);
+ if (!map) goto notrans;
+- p = malloc(sizeof *p + namelen + 1);
++ p = calloc(sizeof *p + namelen + 1, 1);
+ if (!p) {
+ __munmap((void *)map, map_size);
+ goto notrans;
+--
+2.11.1
+
diff --git a/main/musl/0009-avoid-unbounded-strlen-in-gettext-functions.patch b/main/musl/0009-avoid-unbounded-strlen-in-gettext-functions.patch
new file mode 100644
index 0000000000..b682490010
--- /dev/null
+++ b/main/musl/0009-avoid-unbounded-strlen-in-gettext-functions.patch
@@ -0,0 +1,38 @@
+From d6601f0af0452b218d247cb47513fc9cd6bbf2e2 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Sun, 29 Jan 2017 11:24:20 -0500
+Subject: [PATCH] avoid unbounded strlen in gettext functions
+
+use the standard strnlen idiom for cases where lengths greater than an
+imposed limit are going to be rejected immediately anyway.
+---
+ src/locale/dcngettext.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c
+index 73a9fd70..b68e24bc 100644
+--- a/src/locale/dcngettext.c
++++ b/src/locale/dcngettext.c
+@@ -40,8 +40,8 @@ char *bindtextdomain(const char *domainname, const char *dirname)
+ if (!domainname) return 0;
+ if (!dirname) return gettextdir(domainname, &(size_t){0});
+
+- size_t domlen = strlen(domainname);
+- size_t dirlen = strlen(dirname);
++ size_t domlen = strnlen(domainname, NAME_MAX+1);
++ size_t dirlen = strnlen(dirname, PATH_MAX);
+ if (domlen > NAME_MAX || dirlen >= PATH_MAX) {
+ errno = EINVAL;
+ return 0;
+@@ -127,7 +127,7 @@ char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2,
+
+ if (!domainname) domainname = __gettextdomain();
+
+- domlen = strlen(domainname);
++ domlen = strnlen(domainname, NAME_MAX+1);
+ if (domlen > NAME_MAX) goto notrans;
+
+ dirname = gettextdir(domainname, &dirlen);
+--
+2.11.1
+
diff --git a/main/musl/0007-add-s390x-dlsym.patch b/main/musl/0010-s390x-implement-dlsym.patch
index ed88df7fd0..3611d3efd9 100644
--- a/main/musl/0007-add-s390x-dlsym.patch
+++ b/main/musl/0010-s390x-implement-dlsym.patch
@@ -1,7 +1,7 @@
From 9201c3afce0ff53a9b1c5da5285ff84c11dee9d4 Mon Sep 17 00:00:00 2001
From: Bobby Bingham <koorogi@koorogi.info>
Date: Sun, 5 Feb 2017 21:29:52 -0600
-Subject: s390x: implement dlsym
+Subject: [PATCH] s390x: implement dlsym
This was missed when writing the port initially.
---
@@ -11,7 +11,7 @@ This was missed when writing the port initially.
diff --git a/src/ldso/s390x/dlsym.s b/src/ldso/s390x/dlsym.s
new file mode 100644
-index 0000000..2e9fa8f
+index 00000000..2e9fa8fb
--- /dev/null
+++ b/src/ldso/s390x/dlsym.s
@@ -0,0 +1,6 @@
@@ -22,5 +22,5 @@ index 0000000..2e9fa8f
+ lgr %r4, %r14
+ jg __dlsym
--
-cgit v0.11.2
+2.11.1
diff --git a/main/musl/0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch b/main/musl/0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch
new file mode 100644
index 0000000000..37373594e2
--- /dev/null
+++ b/main/musl/0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch
@@ -0,0 +1,40 @@
+From b261a24256792177a5f0531dbb25cc6267220ca5 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Wed, 15 Feb 2017 17:05:50 -0500
+Subject: [PATCH] fix build regression in arm atomics asm with new binutils
+
+binutils commit bada43421274615d0d5f629a61a60b7daa71bc15 tightened
+immediate fixup handling in gas in such a way that the final .arch of
+an object file must be compatible with the fixups used when the
+instruction was assembled; this in turn broke assembling of atomics.s,
+at least in thumb mode.
+
+it's not clear whether this should be considered a bug in gas, but
+.object_arch is preferable anyway for our purpose here of controlling
+the ISA level tag on the object file being produced, and it's the
+intended directive for use in object files with runtime code
+selection. research by Szabolcs Nagy confirmed that .object_arch is
+supported in all relevant versions of binutils and clang's integrated
+assembler.
+
+patch by Reiner Herrmann.
+---
+ src/thread/arm/atomics.s | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/thread/arm/atomics.s b/src/thread/arm/atomics.s
+index 202faa4a..101ad391 100644
+--- a/src/thread/arm/atomics.s
++++ b/src/thread/arm/atomics.s
+@@ -84,7 +84,7 @@ __a_gettp_cp15:
+ bx lr
+
+ /* Tag this file with minimum ISA level so as not to affect linking. */
+-.arch armv4t
++.object_arch armv4t
+ .eabi_attribute 6,2
+
+ .data
+--
+2.11.1
+
diff --git a/main/musl/0012-allow-page-size-to-vary-on-arm.patch b/main/musl/0012-allow-page-size-to-vary-on-arm.patch
new file mode 100644
index 0000000000..bba55300cd
--- /dev/null
+++ b/main/musl/0012-allow-page-size-to-vary-on-arm.patch
@@ -0,0 +1,31 @@
+From 0a4a16d11cc263c3f32325f985b9ed94b04af79f Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Wed, 22 Feb 2017 19:25:13 -0500
+Subject: [PATCH] allow page size to vary on arm
+
+the ABI for arm was silently changed at some point to allow page sizes
+other than 4k; traditional binaries built with only 4k-aligned offsets
+between load segments cannot run on such systems, but newer binutils
+versions use 64k offset alignment.
+
+while larger page size is undesirable for various reasons, users have
+encountered hardware and/or kernels that lock the page size to a
+larger value, so follow the new ABI and allow it to vary.
+---
+ arch/arm/bits/limits.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/arch/arm/bits/limits.h b/arch/arm/bits/limits.h
+index 65a3dd64..fbc6d238 100644
+--- a/arch/arm/bits/limits.h
++++ b/arch/arm/bits/limits.h
+@@ -1,6 +1,5 @@
+ #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+-#define PAGE_SIZE 4096
+ #define LONG_BIT 32
+ #endif
+
+--
+2.11.1
+
diff --git a/main/musl/0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch b/main/musl/0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch
new file mode 100644
index 0000000000..75e3d96ba9
--- /dev/null
+++ b/main/musl/0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch
@@ -0,0 +1,41 @@
+From 827c4e6fbe46142049ef3d8bcb8f35951712797d Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sun, 5 Mar 2017 23:03:35 +0100
+Subject: [PATCH] fix lsearch and lfind to pass key as first arg to the compar
+ callback
+
+this is not a conformance issue as posix does not specify the
+argument order, but the order is specified for bsearch and some
+systems document the order for lsearch consistently (openbsd).
+
+since there were two indpendent reports of this issue it's better
+to use the more widely expected argument order.
+---
+ src/search/lsearch.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/search/lsearch.c b/src/search/lsearch.c
+index 63f31922..5eb5cc2b 100644
+--- a/src/search/lsearch.c
++++ b/src/search/lsearch.c
+@@ -9,7 +9,7 @@ void *lsearch(const void *key, void *base, size_t *nelp, size_t width,
+ size_t i;
+
+ for (i = 0; i < n; i++)
+- if (compar(p[i], key) == 0)
++ if (compar(key, p[i]) == 0)
+ return p[i];
+ *nelp = n+1;
+ return memcpy(p[n], key, width);
+@@ -23,7 +23,7 @@ void *lfind(const void *key, const void *base, size_t *nelp,
+ size_t i;
+
+ for (i = 0; i < n; i++)
+- if (compar(p[i], key) == 0)
++ if (compar(key, p[i]) == 0)
+ return p[i];
+ return 0;
+ }
+--
+2.11.1
+
diff --git a/main/musl/0008-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch b/main/musl/0014-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
index d8230159e7..cf026c0f9a 100644
--- a/main/musl/0008-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
+++ b/main/musl/0014-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
@@ -12,7 +12,7 @@ negative, which depends on the linker's ordering of text sections.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc64/reloc.h b/arch/powerpc64/reloc.h
-index e1bad00..faf70ac 100644
+index e1bad009..faf70acd 100644
--- a/arch/powerpc64/reloc.h
+++ b/arch/powerpc64/reloc.h
@@ -27,6 +27,6 @@
@@ -24,5 +24,5 @@ index e1bad00..faf70ac 100644
" add %0, %0, %1 \n" \
: "=r"(*(fp)), "=r"((long){0}) : : "memory", "lr" )
--
-1.9.3
+2.11.1
diff --git a/main/musl/0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch b/main/musl/0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch
new file mode 100644
index 0000000000..af8d843923
--- /dev/null
+++ b/main/musl/0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch
@@ -0,0 +1,40 @@
+From c9783e4d32e786c4b76bf77c6030111d9e79dbb7 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 3 Dec 2016 20:52:43 +0000
+Subject: [PATCH] treat STB_WEAK and STB_GNU_UNIQUE like STB_GLOBAL in find_sym
+
+A weak symbol definition is not special during dynamic linking, so
+don't let a strong definition in a later module override it.
+(glibc dynamic linker allows overriding weak definitions if
+LD_DYNAMIC_WEAK is set, musl does not.)
+
+STB_GNU_UNIQUE means that the symbol is global, even if it is in a
+module that's loaded with RTLD_LOCAL, and all references resolve to
+the same definition. This semantics is only relevant for c++ plugin
+systems and even there it's often not what the user wants (so it can
+be turned off in g++ by -fno-gnu-unique when the c++ shared lib is
+compiled). In musl just treat it like STB_GLOBAL.
+---
+ ldso/dynlink.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/ldso/dynlink.c b/ldso/dynlink.c
+index a03f75e3..d00827a3 100644
+--- a/ldso/dynlink.c
++++ b/ldso/dynlink.c
+@@ -286,11 +286,9 @@ static struct symdef find_sym(struct dso *dso, const char *s, int need_def)
+ continue;
+ if (!(1<<(sym->st_info&0xf) & OK_TYPES)) continue;
+ if (!(1<<(sym->st_info>>4) & OK_BINDS)) continue;
+-
+- if (def.sym && sym->st_info>>4 == STB_WEAK) continue;
+ def.sym = sym;
+ def.dso = dso;
+- if (sym->st_info>>4 == STB_GLOBAL) break;
++ break;
+ }
+ return def;
+ }
+--
+2.11.1
+
diff --git a/main/musl/0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch b/main/musl/0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch
new file mode 100644
index 0000000000..f168e0c7fe
--- /dev/null
+++ b/main/musl/0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch
@@ -0,0 +1,41 @@
+From 6582baa752a8facb2c8a7b5b3dcf67331429cdc1 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 14:18:07 -0400
+Subject: [PATCH] fix free of uninitialized buffer pointer on error in regexec
+
+the fix in commit c3edc06d1e1360f3570db9155d6b318ae0d0f0f7 for
+CVE-2016-8859 used gotos to exit on overflow conditions, but the code
+in that error path assumed the buffer pointer was valid or null. thus,
+the conditions which previously led to under-allocation and buffer
+overflow could instead lead to an invalid pointer being passed to
+free.
+---
+ src/regex/regexec.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/regex/regexec.c b/src/regex/regexec.c
+index 5c4cb922..253b0e14 100644
+--- a/src/regex/regexec.c
++++ b/src/regex/regexec.c
+@@ -215,15 +215,15 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string,
+ /* Ensure that tbytes and xbytes*num_states cannot overflow, and that
+ * they don't contribute more than 1/8 of SIZE_MAX to total_bytes. */
+ if (num_tags > SIZE_MAX/(8 * sizeof(regoff_t) * tnfa->num_states))
+- goto error_exit;
++ return REG_ESPACE;
+
+ /* Likewise check rbytes. */
+ if (tnfa->num_states+1 > SIZE_MAX/(8 * sizeof(*reach_next)))
+- goto error_exit;
++ return REG_ESPACE;
+
+ /* Likewise check pbytes. */
+ if (tnfa->num_states > SIZE_MAX/(8 * sizeof(*reach_pos)))
+- goto error_exit;
++ return REG_ESPACE;
+
+ /* Compute the length of the block we need. */
+ tbytes = sizeof(*tmp_tags) * num_tags;
+--
+2.11.1
+
diff --git a/main/musl/0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch b/main/musl/0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch
new file mode 100644
index 0000000000..0dd2d6f8b6
--- /dev/null
+++ b/main/musl/0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch
@@ -0,0 +1,28 @@
+From 500f5bee6c03981961f1586fca2a1dee6fdce7c7 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 14:29:50 -0400
+Subject: [PATCH] in static dl_iterate_phdr, fix use of possibly-uninitialized
+ aux data
+
+this could only happen if an incomplete auxv was passed into the
+program, but it's better to just initialize the data anyway.
+---
+ src/ldso/dl_iterate_phdr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ldso/dl_iterate_phdr.c b/src/ldso/dl_iterate_phdr.c
+index c141fd9b..e55cbf76 100644
+--- a/src/ldso/dl_iterate_phdr.c
++++ b/src/ldso/dl_iterate_phdr.c
+@@ -11,7 +11,7 @@ static int static_dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size
+ size_t base = 0;
+ size_t n;
+ struct dl_phdr_info info;
+- size_t i, aux[AUX_CNT];
++ size_t i, aux[AUX_CNT] = {0};
+
+ for (i=0; libc.auxv[i]; i+=2)
+ if (libc.auxv[i]<AUX_CNT) aux[libc.auxv[i]] = libc.auxv[i+1];
+--
+2.11.1
+
diff --git a/main/musl/0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch b/main/musl/0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch
new file mode 100644
index 0000000000..138bd77f83
--- /dev/null
+++ b/main/musl/0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch
@@ -0,0 +1,30 @@
+From 6a209f14ff7273d9429e5153c5b6b1990cb508e3 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 14:31:34 -0400
+Subject: [PATCH] fix possible fd leak, unrestored cancellation state on dns
+ socket fail
+
+---
+ src/network/res_msend.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/network/res_msend.c b/src/network/res_msend.c
+index de7f6157..3e018009 100644
+--- a/src/network/res_msend.c
++++ b/src/network/res_msend.c
+@@ -76,7 +76,11 @@ int __res_msend_rc(int nqueries, const unsigned char *const *queries,
+ fd = socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
+ family = AF_INET;
+ }
+- if (fd < 0 || bind(fd, (void *)&sa, sl) < 0) return -1;
++ if (fd < 0 || bind(fd, (void *)&sa, sl) < 0) {
++ if (fd >= 0) close(fd);
++ pthread_setcancelstate(cs, 0);
++ return -1;
++ }
+
+ /* Past this point, there are no errors. Each individual query will
+ * yield either no reply (indicated by zero length) or an answer
+--
+2.11.1
+
diff --git a/main/musl/0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch b/main/musl/0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch
new file mode 100644
index 0000000000..4e0c165fb6
--- /dev/null
+++ b/main/musl/0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch
@@ -0,0 +1,30 @@
+From 733d1ea759119bcd0554f25034d1b4113b910900 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 15:06:58 -0400
+Subject: [PATCH] fix wide scanf's use of a compound literal past its lifetime
+
+---
+ src/stdio/vfwscanf.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/stdio/vfwscanf.c b/src/stdio/vfwscanf.c
+index 223aad4f..1ebc5cef 100644
+--- a/src/stdio/vfwscanf.c
++++ b/src/stdio/vfwscanf.c
+@@ -214,11 +214,12 @@ int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap)
+ set = L"";
+ } else if (t == 's') {
+ invert = 1;
+- set = (const wchar_t[]){
++ static const wchar_t spaces[] = {
+ ' ', '\t', '\n', '\r', 11, 12, 0x0085,
+ 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
+ 0x2006, 0x2008, 0x2009, 0x200a,
+ 0x2028, 0x2029, 0x205f, 0x3000, 0 };
++ set = spaces;
+ } else {
+ if (*++p == '^') p++, invert = 1;
+ else invert = 0;
+--
+2.11.1
+
diff --git a/main/musl/0023-fix-one-byte-overflow-in-legacy-getpass-function.patch b/main/musl/0023-fix-one-byte-overflow-in-legacy-getpass-function.patch
new file mode 100644
index 0000000000..ef0efac006
--- /dev/null
+++ b/main/musl/0023-fix-one-byte-overflow-in-legacy-getpass-function.patch
@@ -0,0 +1,27 @@
+From 3ec8b3aeb88cef8574a7b0f677ebc1801f03821d Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 15:13:16 -0400
+Subject: [PATCH] fix one-byte overflow in legacy getpass function
+
+if the length of the input was equal to the buffer size (128), a fixed
+value of zero was written one byte past the end of the static buffer.
+---
+ src/legacy/getpass.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/legacy/getpass.c b/src/legacy/getpass.c
+index 15ab9851..d51286c0 100644
+--- a/src/legacy/getpass.c
++++ b/src/legacy/getpass.c
+@@ -27,7 +27,7 @@ char *getpass(const char *prompt)
+
+ l = read(fd, password, sizeof password);
+ if (l >= 0) {
+- if (l > 0 && password[l-1] == '\n') l--;
++ if (l > 0 && password[l-1] == '\n' || l==sizeof password) l--;
+ password[l] = 0;
+ }
+
+--
+2.11.1
+
diff --git a/main/musl/0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch b/main/musl/0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch
new file mode 100644
index 0000000000..d2e352183f
--- /dev/null
+++ b/main/musl/0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch
@@ -0,0 +1,55 @@
+From c49d3c8adadfa24235fcf4779bb722b1aa6f480b Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 18:51:27 -0400
+Subject: [PATCH] avoid loading of multiple libc versions via explicit pathname
+
+such loading is unsafe, and can happen when programs use their own
+logic to locate a .so file then pass the absolute pathname to dlopen,
+or if an absolute pathname ends up in DT_NEEDED headers. multiple
+loads with only the base name were already precluded, provided libc
+was named appropriately, by special-casing standard library names.
+
+one function symbol (in the reserved namespace, but public, since it's
+part of the crt1 entry point ABI) and one data symbol are checked.
+this way we avoid likely false positives, particularly from libraries
+interposing and wrapping functions. there is no hard requirement to
+avoid breaking such usage, since trying to run a hook before libc is
+even initialized is not a supported usage case, but it's friendlier
+not to break things.
+---
+ ldso/dynlink.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/ldso/dynlink.c b/ldso/dynlink.c
+index f8db1f82..80d85e94 100644
+--- a/ldso/dynlink.c
++++ b/ldso/dynlink.c
+@@ -1042,6 +1042,17 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ close(fd);
+ if (!map) return 0;
+
++ /* Avoid the danger of getting two versions of libc mapped into the
++ * same process when an absolute pathname was used. The symbols
++ * checked are chosen to catch both musl and glibc, and to avoid
++ * false positives from interposition-hack libraries. */
++ decode_dyn(&temp_dso);
++ if (find_sym(&temp_dso, "__libc_start_main", 1).sym &&
++ find_sym(&temp_dso, "stdin", 1).sym) {
++ unmap_library(&temp_dso);
++ return load_library("libc.so", needed_by);
++ }
++
+ /* Allocate storage for the new DSO. When there is TLS, this
+ * storage must include a reservation for all pre-existing
+ * threads to obtain copies of both the new TLS, and an
+@@ -1061,7 +1072,6 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ return 0;
+ }
+ memcpy(p, &temp_dso, sizeof temp_dso);
+- decode_dyn(p);
+ p->dev = st.st_dev;
+ p->ino = st.st_ino;
+ p->refcnt = 1;
+--
+2.11.1
+
diff --git a/main/musl/0025-remove-unused-refcnt-field-for-shared-libraries.patch b/main/musl/0025-remove-unused-refcnt-field-for-shared-libraries.patch
new file mode 100644
index 0000000000..15b76119fe
--- /dev/null
+++ b/main/musl/0025-remove-unused-refcnt-field-for-shared-libraries.patch
@@ -0,0 +1,48 @@
+From cb525397bb053ea49cf160965477a17b17286eb3 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 14 Mar 2017 19:00:02 -0400
+Subject: [PATCH] remove unused refcnt field for shared libraries
+
+---
+ ldso/dynlink.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/ldso/dynlink.c b/ldso/dynlink.c
+index 80d85e94..178fe27e 100644
+--- a/ldso/dynlink.c
++++ b/ldso/dynlink.c
+@@ -52,7 +52,6 @@ struct dso {
+ Phdr *phdr;
+ int phnum;
+ size_t phentsize;
+- int refcnt;
+ Sym *syms;
+ Elf_Symndx *hashtab;
+ uint32_t *ghashtab;
+@@ -971,7 +970,6 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ /* Search for the name to see if it's already loaded */
+ for (p=head->next; p; p=p->next) {
+ if (p->shortname && !strcmp(p->shortname, name)) {
+- p->refcnt++;
+ return p;
+ }
+ }
+@@ -1034,7 +1032,6 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ if (!p->shortname && pathname != name)
+ p->shortname = strrchr(p->name, '/')+1;
+ close(fd);
+- p->refcnt++;
+ return p;
+ }
+ }
+@@ -1074,7 +1071,6 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ memcpy(p, &temp_dso, sizeof temp_dso);
+ p->dev = st.st_dev;
+ p->ino = st.st_ino;
+- p->refcnt = 1;
+ p->needed_by = needed_by;
+ p->name = p->buf;
+ strcpy(p->name, pathname);
+--
+2.11.1
+
diff --git a/main/musl/0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch b/main/musl/0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch
new file mode 100644
index 0000000000..52eed490a5
--- /dev/null
+++ b/main/musl/0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch
@@ -0,0 +1,103 @@
+From 8cba1dc46c8f29261aa441e70bac798f2c2c0f58 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Wed, 15 Mar 2017 02:55:49 +0100
+Subject: [PATCH] fix threshold constants in j0f, y0f, j1f, y1f
+
+partly following freebsd rev 279491
+https://svnweb.freebsd.org/base?view=revision&revision=279491
+(musl had some of the fixes before freebsd).
+
+the change should not matter much for j0f, y0f, but it improves
+j1f and y1f in [2.5,~3.75] (that is [0x40200000,~0x40700000]).
+near roots (e.g. around 3.8317 for j1f) there are still large
+ulp errors.
+
+dropped code that tried to raise inexact.
+---
+ src/math/j0f.c | 8 ++++----
+ src/math/j1f.c | 17 ++++++++---------
+ 2 files changed, 12 insertions(+), 13 deletions(-)
+
+diff --git a/src/math/j0f.c b/src/math/j0f.c
+index 45883dc4..fab554a3 100644
+--- a/src/math/j0f.c
++++ b/src/math/j0f.c
+@@ -208,8 +208,8 @@ static float pzerof(float x)
+ GET_FLOAT_WORD(ix, x);
+ ix &= 0x7fffffff;
+ if (ix >= 0x41000000){p = pR8; q = pS8;}
+- else if (ix >= 0x40f71c58){p = pR5; q = pS5;}
+- else if (ix >= 0x4036db68){p = pR3; q = pS3;}
++ else if (ix >= 0x409173eb){p = pR5; q = pS5;}
++ else if (ix >= 0x4036d917){p = pR3; q = pS3;}
+ else /*ix >= 0x40000000*/ {p = pR2; q = pS2;}
+ z = 1.0f/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+@@ -304,8 +304,8 @@ static float qzerof(float x)
+ GET_FLOAT_WORD(ix, x);
+ ix &= 0x7fffffff;
+ if (ix >= 0x41000000){p = qR8; q = qS8;}
+- else if (ix >= 0x40f71c58){p = qR5; q = qS5;}
+- else if (ix >= 0x4036db68){p = qR3; q = qS3;}
++ else if (ix >= 0x409173eb){p = qR5; q = qS5;}
++ else if (ix >= 0x4036d917){p = qR3; q = qS3;}
+ else /*ix >= 0x40000000*/ {p = qR2; q = qS2;}
+ z = 1.0f/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+diff --git a/src/math/j1f.c b/src/math/j1f.c
+index 58875af9..3434c53d 100644
+--- a/src/math/j1f.c
++++ b/src/math/j1f.c
+@@ -74,14 +74,13 @@ float j1f(float x)
+ return 1/(x*x);
+ if (ix >= 0x40000000) /* |x| >= 2 */
+ return common(ix, fabsf(x), 0, sign);
+- if (ix >= 0x32000000) { /* |x| >= 2**-27 */
++ if (ix >= 0x39000000) { /* |x| >= 2**-13 */
+ z = x*x;
+ r = z*(r00+z*(r01+z*(r02+z*r03)));
+ s = 1+z*(s01+z*(s02+z*(s03+z*(s04+z*s05))));
+ z = 0.5f + r/s;
+ } else
+- /* raise inexact if x!=0 */
+- z = 0.5f + x;
++ z = 0.5f;
+ return z*x;
+ }
+
+@@ -114,7 +113,7 @@ float y1f(float x)
+ return 1/x;
+ if (ix >= 0x40000000) /* |x| >= 2.0 */
+ return common(ix,x,1,0);
+- if (ix < 0x32000000) /* x < 2**-27 */
++ if (ix < 0x33000000) /* x < 2**-25 */
+ return -tpi/x;
+ z = x*x;
+ u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
+@@ -205,8 +204,8 @@ static float ponef(float x)
+ GET_FLOAT_WORD(ix, x);
+ ix &= 0x7fffffff;
+ if (ix >= 0x41000000){p = pr8; q = ps8;}
+- else if (ix >= 0x40f71c58){p = pr5; q = ps5;}
+- else if (ix >= 0x4036db68){p = pr3; q = ps3;}
++ else if (ix >= 0x409173eb){p = pr5; q = ps5;}
++ else if (ix >= 0x4036d917){p = pr3; q = ps3;}
+ else /*ix >= 0x40000000*/ {p = pr2; q = ps2;}
+ z = 1.0f/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+@@ -300,9 +299,9 @@ static float qonef(float x)
+
+ GET_FLOAT_WORD(ix, x);
+ ix &= 0x7fffffff;
+- if (ix >= 0x40200000){p = qr8; q = qs8;}
+- else if (ix >= 0x40f71c58){p = qr5; q = qs5;}
+- else if (ix >= 0x4036db68){p = qr3; q = qs3;}
++ if (ix >= 0x41000000){p = qr8; q = qs8;}
++ else if (ix >= 0x409173eb){p = qr5; q = qs5;}
++ else if (ix >= 0x4036d917){p = qr3; q = qs3;}
+ else /*ix >= 0x40000000*/ {p = qr2; q = qs2;}
+ z = 1.0f/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+--
+2.11.1
+
diff --git a/main/musl/0009-fix-fpreg_t-remove-unused-per_struct-s390x.patch b/main/musl/0028-s390x-fix-fpreg_t-and-remove-unused-per_struct.patch
index 3dbbb84234..6ad516e316 100644
--- a/main/musl/0009-fix-fpreg_t-remove-unused-per_struct-s390x.patch
+++ b/main/musl/0028-s390x-fix-fpreg_t-and-remove-unused-per_struct.patch
@@ -1,7 +1,7 @@
From 74bca42e1613c58805d7b048841c2fa8f8502158 Mon Sep 17 00:00:00 2001
From: "Tuan M. Hoang" <tmhoang@flatglobe.org>
Date: Tue, 14 Mar 2017 16:44:04 -0400
-Subject: s390x: fix fpreg_t and remove unused per_struct
+Subject: [PATCH] s390x: fix fpreg_t and remove unused per_struct
Including sys/procfs.h complains unknown type name 'fpreg_t' in
bits/user.h. fpreg_t in bits/signal.h and elf_fpreg_t in bits/user.h
@@ -14,7 +14,7 @@ asm/ptrace.h
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/s390x/bits/user.h b/arch/s390x/bits/user.h
-index 90f07b7..17bce16 100644
+index 90f07b78..17bce16f 100644
--- a/arch/s390x/bits/user.h
+++ b/arch/s390x/bits/user.h
@@ -8,7 +8,7 @@ typedef union {
@@ -36,5 +36,5 @@ index 90f07b7..17bce16 100644
struct _user_regs_struct {
struct _user_psw_struct psw;
--
-cgit v0.11.2
+2.11.1
diff --git a/main/musl/0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch b/main/musl/0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch
new file mode 100644
index 0000000000..f3bcceb6dc
--- /dev/null
+++ b/main/musl/0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch
@@ -0,0 +1,47 @@
+From dbff2bb889bc831599b022c49252c69bf48f4e4e Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Wed, 15 Mar 2017 20:27:38 -0400
+Subject: [PATCH] fix POSIX-format TZ dst transition times for southern
+ hemisphere
+
+the time of day at which daylight time switches over is specified in
+local time in the dst state prior to the transition. the code for
+handling this wrongly assumed it needed to switch whether dst or
+standard offset is applied to the transition time when the dst end
+date is before the dst start date (souther hemisphere summer), but in
+fact the end transition time should always be adjusted for dst, and
+the start transition time should always be adjusted for standard time.
+---
+ src/time/__tz.c | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/src/time/__tz.c b/src/time/__tz.c
+index 0e0c4ea2..ffe8d402 100644
+--- a/src/time/__tz.c
++++ b/src/time/__tz.c
+@@ -373,18 +373,14 @@ void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppo
+ long long t0 = rule_to_secs(r0, y);
+ long long t1 = rule_to_secs(r1, y);
+
++ if (!local) {
++ t0 += __timezone;
++ t1 += dst_off;
++ }
+ if (t0 < t1) {
+- if (!local) {
+- t0 += __timezone;
+- t1 += dst_off;
+- }
+ if (t >= t0 && t < t1) goto dst;
+ goto std;
+ } else {
+- if (!local) {
+- t1 += __timezone;
+- t0 += dst_off;
+- }
+ if (t >= t1 && t < t0) goto std;
+ goto dst;
+ }
+--
+2.11.1
+
diff --git a/main/musl/APKBUILD b/main/musl/APKBUILD
index 9a83d4ceea..0efec418dc 100644
--- a/main/musl/APKBUILD
+++ b/main/musl/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=musl
pkgver=1.1.16
-pkgrel=3
+pkgrel=4
pkgdesc="the musl c library (libc) implementation"
url="http://www.musl-libc.org/"
arch="all"
@@ -23,9 +23,25 @@ source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz
0004-fix-getopt-_long-clobbering-of-optopt-on-success.patch
0005-treat-base-1-as-an-error-in-strtol-family-functions.patch
0006-fix-crash-from-corrupted-tls-module-list-after-faile.patch
- 0007-add-s390x-dlsym.patch
- 0008-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
- 0009-fix-fpreg_t-remove-unused-per_struct-s390x.patch
+ 0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch
+ 0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch
+ 0009-avoid-unbounded-strlen-in-gettext-functions.patch
+ 0010-s390x-implement-dlsym.patch
+ 0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch
+ 0012-allow-page-size-to-vary-on-arm.patch
+ 0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch
+ 0014-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
+ 0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch
+ 0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch
+ 0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch
+ 0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch
+ 0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch
+ 0023-fix-one-byte-overflow-in-legacy-getpass-function.patch
+ 0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch
+ 0025-remove-unused-refcnt-field-for-shared-libraries.patch
+ 0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch
+ 0028-s390x-fix-fpreg_t-and-remove-unused-per_struct.patch
+ 0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch
ldconfig
__stack_chk_fail_local.c
@@ -152,9 +168,25 @@ sha512sums="47c00e50b7605102fb4aebe1f9ba9db94d26fac64805f6d744c9c557a05b8a58dff7
ea103de2721926111510116dedb10e2320715fd20563a342c1dd30f3d1e68049990924b2cf4d03fd9d481ae9488f0e49da5373a79bcec4a8d8c357c64a24751b 0004-fix-getopt-_long-clobbering-of-optopt-on-success.patch
df96c4bd5ff9c197c8aa599948b69716587837de0f298d3adec56077b073e71a49a3c3345e0508cf8a4ed636e3171495bbbdc35435bd8e343c546436f6348359 0005-treat-base-1-as-an-error-in-strtol-family-functions.patch
4dc5cdcab11dee6b62fcb81401a816341e1d802a99e46b072c51575a2c25933354540fe22ae06dcdc85eb9a3cbf7256e7c43aab0e75843846551f9e18bfc39c2 0006-fix-crash-from-corrupted-tls-module-list-after-faile.patch
-39eaf56fe30c7098c75c09567a0d990b90c1017c1c2c160017b2d5f41e6503a23d21c7b20bad0186cf3e6fec9fa28ab4f7d655a8382140186c96302f262379fe 0007-add-s390x-dlsym.patch
-4018ca56adef65df0041805b9359caba467c7f95fe40cba90dfd32333b7dab180bff519b42f8c56c55eab88a35c040bdf4882e15ce5f6dcf155d545578ab8f7b 0008-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
-8060f8094c55857a7f21be6d5092e249eebf312507e02c1e6a469824407f5399e613fa3e47af25ed0c91bf0d5cedb325a92908b137727ca588996daf75037606 0009-fix-fpreg_t-remove-unused-per_struct-s390x.patch
+2184c81e97b78ed7c9e0d41200560420c9e60a8ec297d2e2055c9bf0ee5fdaef475ea6a9bcd4b732d53b453379146a9efb28b7b8aef0726e326fb3da26ba0b8d 0007-fix-bindtextdomain-logic-error-deactivating-other-do.patch
+9c443c0902ed3d38ca2503ce7d4fd6d09d325caf07117833dd03ae999fa2e69ea2bd7b2751f1037eadaa9f13dfaae351841cfbf23301ca2682c98ff3af1a8294 0008-fix-use-of-uninitialized-pointer-in-gettext-core.patch
+fc3fce8a2dc10e1b48ef5d3c57cc1702503a849aa98166b2f25a56f6141340030c87e087b4eef5ccb5e2c3b750205c602c0dced3513031f39d19d1d5a0184506 0009-avoid-unbounded-strlen-in-gettext-functions.patch
+ba0a1e644f3b360e22716333f1125f04130f9fc0a2a0ee4c2cd51a454da5ccced043a510f41088b39ca565787d987331d5730cb87f35b21ad5bb3b85db939a72 0010-s390x-implement-dlsym.patch
+75348cf93be68039aebe37c670981bca04b816fd7ba5846adfe07623592645f6ff2541389a9083fe012cf3472d91eb9d8da47fb31574693557152a34b080e51a 0011-fix-build-regression-in-arm-atomics-asm-with-new-bin.patch
+d73358b5377db7b708dd8fecda8f6bdae007423e853cde86b33ce5078e31761eab3f2169541aca5be8f72a59286db4b866f443a6c2f6565e5852447778fbadac 0012-allow-page-size-to-vary-on-arm.patch
+e3fe35bf310c9d5813553e6762c66764b384a9c2f405e3ba3cea887ff55f6bcd947e55012c5f3e06e16a66d5f289b694ac898fc9b1d4bb0cfb50cf92135e36a3 0013-fix-lsearch-and-lfind-to-pass-key-as-first-arg-to-th.patch
+7a6cd67a5ca246eaedb992f9267bb94b0baccbbd5bb9a6a10a503f623ef052480fc4832da4330b5d3531f239580fdb9e36072f456fe4dd2e9ca6ae6050c55aab 0014-fix-ld-behavior-dependent-crash-in-ppc64-ldso-startu.patch
+48d4fd3510404b2fe934dffb2fc725c6a31e30e33421dc81073673d680d00866890f9c826bf48874845c863db52ebbb015c9e94b45c7a20b6949236f76f81709 0015-treat-STB_WEAK-and-STB_GNU_UNIQUE-like-STB_GLOBAL-in.patch
+0754297d5e2cc9d2244835badb39325b0907604e377ddbabbb865a12429741c71b461ee9f19ebdebc6bd9b6e878919b2bc292b113e1477591171627623dbf557 0019-fix-free-of-uninitialized-buffer-pointer-on-error-in.patch
+0fb792b688bea5024a59645eda680c57c509ad5f6923c8816647644ce5b438f18ef2036b4252ae2993c003e0e192d3a0cfd1f909d5a8c3cd8c21ef1130fca929 0020-in-static-dl_iterate_phdr-fix-use-of-possibly-uninit.patch
+5cb2e43b01d30b9552668508bc4e855c7e90b323c811bf34989eae97b8cfbdccbe50e13bf95cac727314c0077af823eb4666318e53cb2d4584052b2870c36a3b 0021-fix-possible-fd-leak-unrestored-cancellation-state-o.patch
+d8faf157e46f46cf1fbdd8422a1c918834192634f66e54d7cfa88d14a618a8a3c321269b98e2ad33e4059a58b3a23ffd16111011a51f4007c7258befed64bfb5 0022-fix-wide-scanf-s-use-of-a-compound-literal-past-its-.patch
+efabb66abd01dbf73d89933328beffb738d71b227f7d7dd48b02ca0c9b04b554475bde70a814317b7a016c64c60fbaf98bf78c1b50da504a3e23fd175950515a 0023-fix-one-byte-overflow-in-legacy-getpass-function.patch
+b1141d2b5c28d16848dcd8b40182938d634023a4aa0e7f0be567fa7e6c40c03431574e9214949e723a031f90a6c20153ca1a6c21eda3b8ea05de5cebf6b1fe38 0024-avoid-loading-of-multiple-libc-versions-via-explicit.patch
+955882a1a2a3e7211e20527858ca5dc0944b5d44fdacb547e0d4b4bd27fdf63672b95e16faa4b37e9ee4b384e7f33ce394ee556a201be6011630c84ebf64b312 0025-remove-unused-refcnt-field-for-shared-libraries.patch
+dad1ed979898ddaa0a49c601160a948ba229b251307210a14240e4ebf6230b16ffc0138f396fc226942c487e196211964449e7314f83d208ac219a071a4e11b3 0026-fix-threshold-constants-in-j0f-y0f-j1f-y1f.patch
+0472694cdd5a95b8df9b0e585afc7171ae9138133832ad7c0fadae4ea0a742eaa09a4d4449197ccaaefeae99c3cb7ec784068243a3a2d434429a0455c396e6bb 0028-s390x-fix-fpreg_t-and-remove-unused-per_struct.patch
+33c24b895bcf1b84d90a522328b39d5b0a4aff822d0701f2f9db07a6c44c49bb3a8b16a19150c550b4fe04fad40e9af43fdf5e1fda0201e9779a471088fe9f23 0029-fix-POSIX-format-TZ-dst-transition-times-for-souther.patch
8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig
062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b __stack_chk_fail_local.c
0d80f37b34a35e3d14b012257c50862dfeb9d2c81139ea2dfa101d981d093b009b9fa450ba27a708ac59377a48626971dfc58e20a3799084a65777a0c32cbc7d getconf.c