1 |
commit: 22ab7121945950659d4325be712f786164699a6c |
2 |
Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Jan 2 11:53:18 2021 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 2 11:53:24 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=22ab7121 |
7 |
|
8 |
media-sound/wavpack: fixed out of bound write |
9 |
|
10 |
Bug: https://bugs.gentoo.org/762154 |
11 |
Package-Manager: Portage-3.0.12, Repoman-3.0.2 |
12 |
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> |
13 |
|
14 |
.../files/wavpack-5.3.2-fix-overflows.patch | 52 ++++++++++++++++++++++ |
15 |
...avpack-5.3.2.ebuild => wavpack-5.3.2-r1.ebuild} | 6 ++- |
16 |
2 files changed, 57 insertions(+), 1 deletion(-) |
17 |
|
18 |
diff --git a/media-sound/wavpack/files/wavpack-5.3.2-fix-overflows.patch b/media-sound/wavpack/files/wavpack-5.3.2-fix-overflows.patch |
19 |
new file mode 100644 |
20 |
index 00000000000..fbbd40ba8bd |
21 |
--- /dev/null |
22 |
+++ b/media-sound/wavpack/files/wavpack-5.3.2-fix-overflows.patch |
23 |
@@ -0,0 +1,52 @@ |
24 |
+From 89df160596132e3bd666322e1c20b2ebd4b92cd0 Mon Sep 17 00:00:00 2001 |
25 |
+From: David Bryant <david@×××××××.com> |
26 |
+Date: Tue, 29 Dec 2020 20:47:19 -0800 |
27 |
+Subject: [PATCH] issue #91: fix integer overflows resulting in buffer overruns |
28 |
+ and sanitize a few more encoding parameters for clarity |
29 |
+ |
30 |
+--- |
31 |
+ src/pack_utils.c | 15 ++++++++++----- |
32 |
+ 1 file changed, 10 insertions(+), 5 deletions(-) |
33 |
+ |
34 |
+diff --git a/src/pack_utils.c b/src/pack_utils.c |
35 |
+index 17d9381..480ab90 100644 |
36 |
+--- a/src/pack_utils.c |
37 |
++++ b/src/pack_utils.c |
38 |
+@@ -200,8 +200,13 @@ int WavpackSetConfiguration64 (WavpackContext *wpc, WavpackConfig *config, int64 |
39 |
+ return FALSE; |
40 |
+ } |
41 |
+ |
42 |
+- if (!num_chans) { |
43 |
+- strcpy (wpc->error_message, "channel count cannot be zero!"); |
44 |
++ if (num_chans <= 0 || num_chans > NEW_MAX_STREAMS * 2) { |
45 |
++ strcpy (wpc->error_message, "invalid channel count!"); |
46 |
++ return FALSE; |
47 |
++ } |
48 |
++ |
49 |
++ if (config->block_samples && (config->block_samples < 16 || config->block_samples > 131072)) { |
50 |
++ strcpy (wpc->error_message, "invalid custom block samples!"); |
51 |
+ return FALSE; |
52 |
+ } |
53 |
+ |
54 |
+@@ -523,7 +528,7 @@ int WavpackPackInit (WavpackContext *wpc) |
55 |
+ if (wpc->config.num_channels == 1) |
56 |
+ wpc->block_samples *= 2; |
57 |
+ |
58 |
+- while (wpc->block_samples > 12000 && wpc->block_samples * wpc->config.num_channels > 300000) |
59 |
++ while (wpc->block_samples > 12000 && (int64_t) wpc->block_samples * wpc->config.num_channels > 300000) |
60 |
+ wpc->block_samples /= 2; |
61 |
+ } |
62 |
+ else { |
63 |
+@@ -534,10 +539,10 @@ int WavpackPackInit (WavpackContext *wpc) |
64 |
+ |
65 |
+ wpc->block_samples = wpc->config.sample_rate / divisor; |
66 |
+ |
67 |
+- while (wpc->block_samples > 12000 && wpc->block_samples * wpc->config.num_channels > 75000) |
68 |
++ while (wpc->block_samples > 12000 && (int64_t) wpc->block_samples * wpc->config.num_channels > 75000) |
69 |
+ wpc->block_samples /= 2; |
70 |
+ |
71 |
+- while (wpc->block_samples * wpc->config.num_channels < 20000) |
72 |
++ while ((int64_t) wpc->block_samples * wpc->config.num_channels < 20000) |
73 |
+ wpc->block_samples *= 2; |
74 |
+ } |
75 |
+ |
76 |
|
77 |
diff --git a/media-sound/wavpack/wavpack-5.3.2.ebuild b/media-sound/wavpack/wavpack-5.3.2-r1.ebuild |
78 |
similarity index 91% |
79 |
rename from media-sound/wavpack/wavpack-5.3.2.ebuild |
80 |
rename to media-sound/wavpack/wavpack-5.3.2-r1.ebuild |
81 |
index 33880cc9703..c34faa9eee4 100644 |
82 |
--- a/media-sound/wavpack/wavpack-5.3.2.ebuild |
83 |
+++ b/media-sound/wavpack/wavpack-5.3.2-r1.ebuild |
84 |
@@ -1,4 +1,4 @@ |
85 |
-# Copyright 1999-2020 Gentoo Authors |
86 |
+# Copyright 1999-2021 Gentoo Authors |
87 |
# Distributed under the terms of the GNU General Public License v2 |
88 |
|
89 |
EAPI=7 |
90 |
@@ -23,6 +23,10 @@ DEPEND="${RDEPEND}" |
91 |
|
92 |
S="${WORKDIR}/WavPack-${COMMIT}" |
93 |
|
94 |
+PATCHES=( |
95 |
+ "${FILESDIR}/${P}-fix-overflows.patch" |
96 |
+) |
97 |
+ |
98 |
src_prepare() { |
99 |
default |
100 |
eautoreconf |