diff options
-rw-r--r-- | system/argon2/APKBUILD | 5 | ||||
-rw-r--r-- | system/musl/APKBUILD | 6 | ||||
-rw-r--r-- | system/musl/CVE-2020-28928.patch | 112 | ||||
-rw-r--r-- | user/vorbis-tools/APKBUILD | 15 | ||||
-rw-r--r-- | user/vorbis-tools/CVE-2014-9638-and-9639.patch (renamed from user/vorbis-tools/vorbis-tools-cve9638-cve9639.patch) | 28 | ||||
-rw-r--r-- | user/vorbis-tools/CVE-2014-9640.patch | 51 | ||||
-rw-r--r-- | user/vorbis-tools/CVE-2015-6749.patch (renamed from user/vorbis-tools/vorbis-tools-CVE-2015-6749.patch) | 17 | ||||
-rw-r--r-- | user/vorbis-tools/vorbis-tools-cve9640.patch | 29 |
8 files changed, 209 insertions, 54 deletions
diff --git a/system/argon2/APKBUILD b/system/argon2/APKBUILD index 42d459e1f..c7a1bd6c2 100644 --- a/system/argon2/APKBUILD +++ b/system/argon2/APKBUILD @@ -4,7 +4,7 @@ pkgname=argon2 _pkgname=phc-winner-argon2 pkgver=20190702 -pkgrel=0 +pkgrel=1 pkgdesc="Password hashing library" url="https://github.com/P-H-C/phc-winner-argon2" arch="all" @@ -30,7 +30,8 @@ package() { sed -i 's#libdir=${prefix}/lib#libdir=/lib#' "$builddir"/libargon2.pc make OPTTARGET=none DESTDIR="$pkgdir" LIBRARY_REL=lib install # ...but cryptsetup needs this in /lib for early-boot - mv "$pkgdir"/usr/lib "$pkgdir"/ + mkdir "$pkgdir"/lib + mv "$pkgdir"/usr/lib/lib* "$pkgdir"/lib } sha512sums="0a4cb89e8e63399f7df069e2862ccd05308b7652bf4ab74372842f66bcc60776399e0eaf979a7b7e31436b5e6913fe5b0a6949549d8c82ebd06e0629b106e85f argon2-20190702.tar.gz" diff --git a/system/musl/APKBUILD b/system/musl/APKBUILD index 8517b148b..735541e51 100644 --- a/system/musl/APKBUILD +++ b/system/musl/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=musl pkgver=1.2.0 -pkgrel=1 +pkgrel=2 pkgdesc="System library (libc) implementation" url="https://www.musl-libc.org/" arch="all" @@ -27,6 +27,7 @@ source="https://musl.libc.org/releases/$pkgname-$pkgver.tar.gz handle-aux-at_base.patch fgetspent_r.patch threads_minus_1.patch + CVE-2020-28928.patch ldconfig getent.c @@ -38,6 +39,8 @@ source="https://musl.libc.org/releases/$pkgname-$pkgver.tar.gz # - CVE-2016-8859 # 1.1.23-r2: # - CVE-2019-14697 +# 1.2.0-r2: +# - CVE-2020-28928 build() { [ "$BOOTSTRAP" = "nocc" ] && return 0 @@ -123,6 +126,7 @@ f01ab92b9d385c15369c0bb7d95e1bc06a009c8851e363517d0ba1bae3fc2647af69fc2f363b5d96 6a7ff16d95b5d1be77e0a0fbb245491817db192176496a57b22ab037637d97a185ea0b0d19da687da66c2a2f5578e4343d230f399d49fe377d8f008410974238 handle-aux-at_base.patch ded41235148930f8cf781538f7d63ecb0c65ea4e8ce792565f3649ee2523592a76b2a166785f0b145fc79f5852fd1fb1729a7a09110b3b8f85cba3912e790807 fgetspent_r.patch 68830961e297d9a499f3b609be84848ad5d3326a1af56e9e54a40ecd972c48da11532c51da572d45e0df3574d63191e7ae0d3a1b84a029365f8d00691de96952 threads_minus_1.patch +343ac5e5365cf98a5d5b7bc192c671733fdba27f06b83484f1ac7647154228745415f62dd676029de538460f8b35e0a70ca453a0f8b73226ed1c420099b1cf90 CVE-2020-28928.patch cb71d29a87f334c75ecbc911becde7be825ab30d8f39fa6d64cb53812a7c9abaf91d9804c72540e5be3ddd3c84cfe7fd9632274309005cb8bcdf9a9b09b4b923 ldconfig 378d70e65bcc65bb4e1415354cecfa54b0c1146dfb24474b69e418cdbf7ad730472cd09f6f103e1c99ba6c324c9560bccdf287f5889bbc3ef0bdf0e08da47413 getent.c 9d42d66fb1facce2b85dad919be5be819ee290bd26ca2db00982b2f8e055a0196290a008711cbe2b18ec9eee8d2270e3b3a4692c5a1b807013baa5c2b70a2bbf iconv.c" diff --git a/system/musl/CVE-2020-28928.patch b/system/musl/CVE-2020-28928.patch new file mode 100644 index 000000000..cc668e149 --- /dev/null +++ b/system/musl/CVE-2020-28928.patch @@ -0,0 +1,112 @@ +From 3ab2a4e02682df1382955071919d8aa3c3ec40d4 Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Thu, 19 Nov 2020 17:12:43 -0500 +Subject: [PATCH] rewrite wcsnrtombs to fix buffer overflow and other bugs + +the original wcsnrtombs implementation, which has been largely +untouched since 0.5.0, attempted to build input-length-limiting +conversion on top of wcsrtombs, which only limits output length. as +best I recall, this choice was made out of a mix of disdain over +having yet another variant function to implement (added in POSIX 2008; +not standard C) and preference not to switch things around and +implement the wcsrtombs in terms of the more general new function, +probably over namespace issues. the strategy employed was to impose +output limits that would ensure the input limit wasn't exceeded, then +finish up the tail character-at-a-time. unfortunately, none of that +worked correctly. + +first, the logic in the wcsrtombs loop was wrong in that it could +easily get stuck making no forward progress, by imposing an output +limit too small to convert even one character. + +the character-at-a-time loop that followed was even worse. it made no +effort to ensure that the converted multibyte character would fit in +the remaining output space, only that there was a nonzero amount of +output space remaining. it also employed an incorrect interpretation +of wcrtomb's interface contract for converting the null character, +thereby failing to act on end of input, and remaining space accounting +was subject to unsigned wrap-around. together these errors allow +unbounded overflow of the destination buffer, controlled by input +length limit and input wchar_t string contents. + +given the extent to which this function was broken, it's plausible +that most applications that would have been rendered exploitable were +sufficiently broken not to be usable in the first place. however, it's +also plausible that common (especially ASCII-only) inputs succeeded in +the wcsrtombs loop, which mostly worked, while leaving the wildly +erroneous code in the second loop exposed to particular non-ASCII +inputs. + +CVE-2020-28928 has been assigned for this issue. +--- + src/multibyte/wcsnrtombs.c | 46 ++++++++++++++++---------------------- + 1 file changed, 19 insertions(+), 27 deletions(-) + +diff --git a/src/multibyte/wcsnrtombs.c b/src/multibyte/wcsnrtombs.c +index 676932b5..95e25e70 100644 +--- a/src/multibyte/wcsnrtombs.c ++++ b/src/multibyte/wcsnrtombs.c +@@ -1,41 +1,33 @@ + #include <wchar.h> ++#include <limits.h> ++#include <string.h> + + size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st) + { +- size_t l, cnt=0, n2; +- char *s, buf[256]; + const wchar_t *ws = *wcs; +- const wchar_t *tmp_ws; +- +- if (!dst) s = buf, n = sizeof buf; +- else s = dst; +- +- while ( ws && n && ( (n2=wn)>=n || n2>32 ) ) { +- if (n2>=n) n2=n; +- tmp_ws = ws; +- l = wcsrtombs(s, &ws, n2, 0); +- if (!(l+1)) { +- cnt = l; +- n = 0; ++ size_t cnt = 0; ++ if (!dst) n=0; ++ while (ws && wn) { ++ char tmp[MB_LEN_MAX]; ++ size_t l = wcrtomb(n<MB_LEN_MAX ? tmp : dst, *ws, 0); ++ if (l==-1) { ++ cnt = -1; + break; + } +- if (s != buf) { +- s += l; ++ if (dst) { ++ if (n<MB_LEN_MAX) { ++ if (l>n) break; ++ memcpy(dst, tmp, l); ++ } ++ dst += l; + n -= l; + } +- wn = ws ? wn - (ws - tmp_ws) : 0; +- cnt += l; +- } +- if (ws) while (n && wn) { +- l = wcrtomb(s, *ws, 0); +- if ((l+1)<=1) { +- if (!l) ws = 0; +- else cnt = l; ++ if (!*ws) { ++ ws = 0; + break; + } +- ws++; wn--; +- /* safe - this loop runs fewer than sizeof(buf) times */ +- s+=l; n-=l; ++ ws++; ++ wn--; + cnt += l; + } + if (dst) *wcs = ws; +-- +2.25.4 + diff --git a/user/vorbis-tools/APKBUILD b/user/vorbis-tools/APKBUILD index 07179decc..4ce488428 100644 --- a/user/vorbis-tools/APKBUILD +++ b/user/vorbis-tools/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Nathan <ndowens@artixlinux.org> pkgname=vorbis-tools pkgver=1.4.0 -pkgrel=0 +pkgrel=1 pkgdesc="Tools for Ogg-Vorbis" url="https://www.xiph.org/vorbis" arch="all" @@ -12,9 +12,10 @@ makedepends="curl-dev flac-dev libvorbis-dev libao-dev speex-dev" subpackages="$pkgname-lang $pkgname-doc" source="http://downloads.xiph.org/releases/vorbis/vorbis-tools-$pkgver.tar.gz - vorbis-tools-CVE-2015-6749.patch - vorbis-tools-cve9638-cve9639.patch - vorbis-tools-cve9640.patch" + CVE-2014-9638-and-9639.patch + CVE-2014-9640.patch + CVE-2015-6749.patch + " prepare() { update_config_guess @@ -37,6 +38,6 @@ package() { } sha512sums="d2473f2e8e6726b5a5083f567797ae42bbb7fa3f26aec3f7b83e641e028c64726299f71a9d75258595a53cf29c18acb84841bcbc39509258d2c8df859e4e3b99 vorbis-tools-1.4.0.tar.gz -c1faa062e7035770db533383ebb3ae18efaf167f7a103c12cef81418da4be43545e368eab2915c243c03354c3bf0b8dbb198da90e7eaa59c8e00f1461c65b601 vorbis-tools-CVE-2015-6749.patch -bcf5ae147de547f6463f3000e06398a8b4db326b44eab02bf314ca8ae3b90c45bd25481fb76ccbf39d9a2798a6c9fadb48600f393b6436f01f95ce2a20c04fe8 vorbis-tools-cve9638-cve9639.patch -3bb8a50309f2657a99662039818040abf345d540915543cf35c3e5855d865fd33bf4bbaf296882662e6b11570199a054c7d34cfdd44ef69f9d3c9f45f4d8671f vorbis-tools-cve9640.patch" +fbe006c1de1b5d03dd84a3213d840468658129bc83f1fad9bcb738d53fd0f76b5f2ebc17b95c456d8b73456b313282bad5e08703649ba8b506371e6c8b466557 CVE-2014-9638-and-9639.patch +9cb9ca5a7cc648e75a4b0027f29f59edd81156578864c46cc2ff773435175a35ea2f31da480e983d05c23d1285d59f0f8a0ec97dd57ba8c11ee5786b619fbaa2 CVE-2014-9640.patch +bf49f572e023678a12d764e459d518f067499a07bd9fe6c037e00730349e066d96174a52043f61dff44fd788b336018c68ae4d26ebe279dc6bf0a07852048ff0 CVE-2015-6749.patch" diff --git a/user/vorbis-tools/vorbis-tools-cve9638-cve9639.patch b/user/vorbis-tools/CVE-2014-9638-and-9639.patch index 80238b741..2585b47be 100644 --- a/user/vorbis-tools/vorbis-tools-cve9638-cve9639.patch +++ b/user/vorbis-tools/CVE-2014-9638-and-9639.patch @@ -1,14 +1,23 @@ -... in order to prevent a division by zero (CVE-2014-9638) and integer -overflow (CVE-2014-9639). +From 3bbabc06c4b35c84f6747ed850213161aca568c7 Mon Sep 17 00:00:00 2001 +From: Petter Reinholdtsen <pere@debian.org> +Date: Tue, 22 Sep 2015 15:14:06 +0200 +Subject: [PATCH] oggenc: validate count of channels in the header + (CVE-2014-9638 & CVE-2014-9639) +Author: Kamil Dudka <kdudka@redhat.com> +Origin: http://lists.xiph.org/pipermail/vorbis-dev/2015-February/020423.html Bug: https://trac.xiph.org/ticket/2136 Bug: https://trac.xiph.org/ticket/2137 +Bug-Debian: https://bugs.debian.org/776086 +Forwarded: not-needed +Reviewed-By: Petter Reinholdtsen <pere@hungry.com> +Last-Update: 2015-09-22 --- - oggenc/audio.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) + oggenc/audio.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/oggenc/audio.c b/oggenc/audio.c -index 477da8c..1167f1b 100644 +index 4921fb9..535a704 100644 --- a/oggenc/audio.c +++ b/oggenc/audio.c @@ -13,6 +13,7 @@ @@ -27,7 +36,7 @@ index 477da8c..1167f1b 100644 if(buf[11]=='C') aifc=1; -@@ -277,11 +279,17 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen) +@@ -277,11 +279,16 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen) return 0; } @@ -42,11 +51,10 @@ index 477da8c..1167f1b 100644 + fprintf(stderr, _("Warning: Unsupported count of channels in AIFF header\n")); + return 0; + } -+ aiff->bigendian = 1; if(aifc) -@@ -416,6 +424,7 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen) +@@ -416,6 +423,7 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen) wav_fmt format; wavfile *wav = malloc(sizeof(wavfile)); int i; @@ -54,7 +62,7 @@ index 477da8c..1167f1b 100644 /* Ok. At this point, we know we have a WAV file. Now we have to detect * whether we support the subtype, and we have to find the actual data -@@ -453,12 +462,18 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen) +@@ -453,12 +461,18 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen) } format.format = READ_U16_LE(buf); @@ -75,3 +83,5 @@ index 477da8c..1167f1b 100644 { if(len<40) -- +GitLab + diff --git a/user/vorbis-tools/CVE-2014-9640.patch b/user/vorbis-tools/CVE-2014-9640.patch new file mode 100644 index 000000000..f21994b58 --- /dev/null +++ b/user/vorbis-tools/CVE-2014-9640.patch @@ -0,0 +1,51 @@ +From 514116d7bea89dad9f1deb7617b2277b5e9115cd Mon Sep 17 00:00:00 2001 +From: Gregory Maxwell <greg@xiph.org> +Date: Wed, 16 Apr 2014 23:55:10 +0000 +Subject: [PATCH] oggenc: fix crash on raw file close, reported by Hanno in + issue #2009. pointer to a non-static struct was escaping its scope. Also fix + a C99-ism. + +svn path=/trunk/vorbis-tools/; revision=19117 +--- + oggenc/oggenc.c | 4 ++-- + oggenc/skeleton.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/oggenc/oggenc.c b/oggenc/oggenc.c +index 4a120f3..e7de0bb 100644 +--- a/oggenc/oggenc.c ++++ b/oggenc/oggenc.c +@@ -97,6 +97,8 @@ int main(int argc, char **argv) + .3,-1, + 0,0,0.f, + 0, 0, 0, 0, 0}; ++ input_format raw_format = {NULL, 0, raw_open, wav_close, "raw", ++ N_("RAW file reader")}; + + int i; + +@@ -239,8 +241,6 @@ int main(int argc, char **argv) + + if(opt.rawmode) + { +- input_format raw_format = {NULL, 0, raw_open, wav_close, "raw", +- N_("RAW file reader")}; + + enc_opts.rate=opt.raw_samplerate; + enc_opts.channels=opt.raw_channels; +diff --git a/oggenc/skeleton.h b/oggenc/skeleton.h +index cf87dc2..168b8b6 100644 +--- a/oggenc/skeleton.h ++++ b/oggenc/skeleton.h +@@ -41,7 +41,7 @@ typedef struct { + ogg_int64_t granule_rate_d; /* granule rate denominator */ + ogg_int64_t start_granule; /* start granule value */ + ogg_uint32_t preroll; /* preroll */ +- unsigned char granule_shift; // a 8-bit field /* 1 byte value holding the granule shift */ ++ unsigned char granule_shift; /* 1 byte value holding the granule shift */ + char *message_header_fields; /* holds all the message header fields */ + /* current total size of the message header fields, for realloc purpose, initially zero */ + ogg_uint32_t current_header_size; +-- +GitLab + diff --git a/user/vorbis-tools/vorbis-tools-CVE-2015-6749.patch b/user/vorbis-tools/CVE-2015-6749.patch index 78e3c810e..b83f70cc2 100644 --- a/user/vorbis-tools/vorbis-tools-CVE-2015-6749.patch +++ b/user/vorbis-tools/CVE-2015-6749.patch @@ -1,9 +1,14 @@ -From 04815d3e1bfae3a6cdfb2c25358a5a72b61299f7 Mon Sep 17 00:00:00 2001 -From: Mark Harris <mark.hsj@gmail.com> -Date: Sun, 30 Aug 2015 05:54:46 -0700 -Subject: [PATCH] oggenc: Fix large alloca on bad AIFF input +From c1059cd1e5c9278fe73a044d0e0792cac75f44b3 Mon Sep 17 00:00:00 2001 +From: Petter Reinholdtsen <pere@debian.org> +Date: Tue, 22 Sep 2015 14:56:58 +0200 +Subject: [PATCH] oggenc: Fix large alloca on bad AIFF input (CVE-2015-6749). -Fixes #2212 +Author: Mark Harris <mark.hsj@gmail.com> +Origin: https://trac.xiph.org/attachment/ticket/2212/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch +Bug-Debian: https://bugs.debian.org/797461 +Forwarded: https://trac.xiph.org/ticket/2212 +Reviewed-By: Petter Reinholdtsen <pere@hungry.com> +Last-Update: 2015-09-22 --- oggenc/audio.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) @@ -37,5 +42,5 @@ index 477da8c..4921fb9 100644 fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n")); return 0; -- -2.5.0 +GitLab diff --git a/user/vorbis-tools/vorbis-tools-cve9640.patch b/user/vorbis-tools/vorbis-tools-cve9640.patch deleted file mode 100644 index 97d18e0db..000000000 --- a/user/vorbis-tools/vorbis-tools-cve9640.patch +++ /dev/null @@ -1,29 +0,0 @@ -Index: vorbis-tools/oggenc/oggenc.c
-===================================================================
---- vorbis-tools/oggenc/oggenc.c (revision 19116)
-+++ vorbis-tools/oggenc/oggenc.c (revision 19117)
-@@ -98,4 +98,6 @@
- 0,0,0.f,
- 0, 0, 0, 0, 0};
-+ input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
-+ N_("RAW file reader")};
-
- int i;
-@@ -240,6 +242,4 @@
- if(opt.rawmode)
- {
-- input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
-- N_("RAW file reader")};
-
- enc_opts.rate=opt.raw_samplerate;
-Index: vorbis-tools/oggenc/skeleton.h
-===================================================================
---- vorbis-tools/oggenc/skeleton.h (revision 19116)
-+++ vorbis-tools/oggenc/skeleton.h (revision 19117)
-@@ -42,5 +42,5 @@
- ogg_int64_t start_granule; /* start granule value */
- ogg_uint32_t preroll; /* preroll */
-- unsigned char granule_shift; // a 8-bit field /* 1 byte value holding the granule shift */
-+ unsigned char granule_shift; /* 1 byte value holding the granule shift */
- char *message_header_fields; /* holds all the message header fields */
- /* current total size of the message header fields, for realloc purpose, initially zero */
|