diff options
| author | Khem Raj <raj.khem@gmail.com> | 2016-11-16 09:47:46 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-11-23 11:10:15 +0000 |
| commit | f9637dc7ad9e9fde6bc076612370abc8d0b26a4e (patch) | |
| tree | f5330cd8799c560c5ba81f4c6dfa81cbe91fb3c0 | |
| parent | bc11d045edd66d6c699b7e1d4e9a5855859e9660 (diff) | |
| download | poky-f9637dc7ad9e9fde6bc076612370abc8d0b26a4e.tar.gz | |
musl: Update to latest on master
Bobby Bingham (2):
treat null vdso base same as missing
add s390x port
Rich Felker (2):
generalize ELF hash table types not to assume 32-bit entries
work around gdb issues recognizing sigreturn trampoline on x86_64
(From OE-Core rev: 39829ef1b8bba3499255c59a4b9713e68a33ddc1)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-core/musl/files/CVE-2016-8859.patch | 79 | ||||
| -rw-r--r-- | meta/recipes-core/musl/musl_git.bb | 3 |
2 files changed, 1 insertions, 81 deletions
diff --git a/meta/recipes-core/musl/files/CVE-2016-8859.patch b/meta/recipes-core/musl/files/CVE-2016-8859.patch deleted file mode 100644 index 82da86f0bd..0000000000 --- a/meta/recipes-core/musl/files/CVE-2016-8859.patch +++ /dev/null | |||
| @@ -1,79 +0,0 @@ | |||
| 1 | From c3edc06d1e1360f3570db9155d6b318ae0d0f0f7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Rich Felker <dalias@aerifal.cx> | ||
| 3 | Date: Thu, 6 Oct 2016 18:34:58 -0400 | ||
| 4 | Subject: [PATCH] fix missing integer overflow checks in regexec buffer size | ||
| 5 | computations | ||
| 6 | |||
| 7 | most of the possible overflows were already ruled out in practice by | ||
| 8 | regcomp having already succeeded performing larger allocations. | ||
| 9 | however at least the num_states*num_tags multiplication can clearly | ||
| 10 | overflow in practice. for safety, check them all, and use the proper | ||
| 11 | type, size_t, rather than int. | ||
| 12 | |||
| 13 | also improve comments, use calloc in place of malloc+memset, and | ||
| 14 | remove bogus casts. | ||
| 15 | |||
| 16 | Upstream-Status: Backport | ||
| 17 | CVE: CVE-2016-8859 | ||
| 18 | |||
| 19 | Signed-off-by: Armin Kuster <akuster@mvista.com> | ||
| 20 | |||
| 21 | --- | ||
| 22 | src/regex/regexec.c | 23 ++++++++++++++++++----- | ||
| 23 | 1 file changed, 18 insertions(+), 5 deletions(-) | ||
| 24 | |||
| 25 | diff --git a/src/regex/regexec.c b/src/regex/regexec.c | ||
| 26 | index 16c5d0a..dd52319 100644 | ||
| 27 | --- a/src/regex/regexec.c | ||
| 28 | +++ b/src/regex/regexec.c | ||
| 29 | @@ -34,6 +34,7 @@ | ||
| 30 | #include <wchar.h> | ||
| 31 | #include <wctype.h> | ||
| 32 | #include <limits.h> | ||
| 33 | +#include <stdint.h> | ||
| 34 | |||
| 35 | #include <regex.h> | ||
| 36 | |||
| 37 | @@ -206,11 +207,24 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, | ||
| 38 | |||
| 39 | /* Allocate memory for temporary data required for matching. This needs to | ||
| 40 | be done for every matching operation to be thread safe. This allocates | ||
| 41 | - everything in a single large block from the stack frame using alloca() | ||
| 42 | - or with malloc() if alloca is unavailable. */ | ||
| 43 | + everything in a single large block with calloc(). */ | ||
| 44 | { | ||
| 45 | - int tbytes, rbytes, pbytes, xbytes, total_bytes; | ||
| 46 | + size_t tbytes, rbytes, pbytes, xbytes, total_bytes; | ||
| 47 | char *tmp_buf; | ||
| 48 | + | ||
| 49 | + /* Ensure that tbytes and xbytes*num_states cannot overflow, and that | ||
| 50 | + * they don't contribute more than 1/8 of SIZE_MAX to total_bytes. */ | ||
| 51 | + if (num_tags > SIZE_MAX/(8 * sizeof(int) * tnfa->num_states)) | ||
| 52 | + goto error_exit; | ||
| 53 | + | ||
| 54 | + /* Likewise check rbytes. */ | ||
| 55 | + if (tnfa->num_states+1 > SIZE_MAX/(8 * sizeof(*reach_next))) | ||
| 56 | + goto error_exit; | ||
| 57 | + | ||
| 58 | + /* Likewise check pbytes. */ | ||
| 59 | + if (tnfa->num_states > SIZE_MAX/(8 * sizeof(*reach_pos))) | ||
| 60 | + goto error_exit; | ||
| 61 | + | ||
| 62 | /* Compute the length of the block we need. */ | ||
| 63 | tbytes = sizeof(*tmp_tags) * num_tags; | ||
| 64 | rbytes = sizeof(*reach_next) * (tnfa->num_states + 1); | ||
| 65 | @@ -221,10 +235,9 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, | ||
| 66 | + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes; | ||
| 67 | |||
| 68 | /* Allocate the memory. */ | ||
| 69 | - buf = xmalloc((unsigned)total_bytes); | ||
| 70 | + buf = calloc(total_bytes, 1); | ||
| 71 | if (buf == NULL) | ||
| 72 | return REG_ESPACE; | ||
| 73 | - memset(buf, 0, (size_t)total_bytes); | ||
| 74 | |||
| 75 | /* Get the various pointers within tmp_buf (properly aligned). */ | ||
| 76 | tmp_tags = (void *)buf; | ||
| 77 | -- | ||
| 78 | 2.7.4 | ||
| 79 | |||
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb index 1ee56b6434..b0c6098133 100644 --- a/meta/recipes-core/musl/musl_git.bb +++ b/meta/recipes-core/musl/musl_git.bb | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | require musl.inc | 4 | require musl.inc |
| 5 | 5 | ||
| 6 | SRCREV = "39494a273eaa6b714e0fa0c59ce7a1f5fbc80a1e" | 6 | SRCREV = "54991729fd1e3d3a0cb71884d758d86afe6da9e0" |
| 7 | 7 | ||
| 8 | PV = "1.1.15+git${SRCPV}" | 8 | PV = "1.1.15+git${SRCPV}" |
| 9 | 9 | ||
| @@ -11,7 +11,6 @@ PV = "1.1.15+git${SRCPV}" | |||
| 11 | 11 | ||
| 12 | SRC_URI = "git://git.musl-libc.org/musl \ | 12 | SRC_URI = "git://git.musl-libc.org/musl \ |
| 13 | file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \ | 13 | file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \ |
| 14 | file://CVE-2016-8859.patch \ | ||
| 15 | " | 14 | " |
| 16 | 15 | ||
| 17 | S = "${WORKDIR}/git" | 16 | S = "${WORKDIR}/git" |
