summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/argon2/APKBUILD5
-rw-r--r--system/musl/APKBUILD6
-rw-r--r--system/musl/CVE-2020-28928.patch112
-rw-r--r--user/vorbis-tools/APKBUILD15
-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.patch51
-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.patch29
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 */