[vlc-devel] [PATCH] contribs: lame: Add assertion to make sure fftenergy is not read OoB

david.fuhrmann at gmail.com david.fuhrmann at gmail.com
Mon Dec 2 10:37:31 CET 2019


From: David Fuhrmann <dfuhrmann at videolan.org>

On macOS (only), we see crashes on the assertion a couple of code
lines below:

FLOAT const el = fftenergy[j];
assert(el >= 0);

To narrow down the problem a bit, add a new assertion to make sure
fftenergy array is never read past its bound, which would lead to
undefined and potentially negative values.
---
 contrib/src/lame/invariant-for-energy-array.patch | 11 +++++++++++
 contrib/src/lame/rules.mak                        |  4 ++++
 2 files changed, 15 insertions(+)
 create mode 100644 contrib/src/lame/invariant-for-energy-array.patch

diff --git a/contrib/src/lame/invariant-for-energy-array.patch b/contrib/src/lame/invariant-for-energy-array.patch
new file mode 100644
index 000000000000..392a40380a5e
--- /dev/null
+++ b/contrib/src/lame/invariant-for-energy-array.patch
@@ -0,0 +1,11 @@
+--- lame/libmp3lame/psymodel.c.orig	2019-12-02 10:13:52.000000000 +0100
++++ lame/libmp3lame/psymodel.c	2019-12-02 10:14:53.000000000 +0100
+@@ -571,6 +571,8 @@
+     for (b = j = 0; b < l->npart; ++b) {
+         FLOAT   ebb = 0, m = 0;
+         int     i;
++
++        assert(j + l->numlines[b] <= HBLKSIZE);
+         for (i = 0; i < l->numlines[b]; ++i, ++j) {
+             FLOAT const el = fftenergy[j];
+             assert(el >= 0);
diff --git a/contrib/src/lame/rules.mak b/contrib/src/lame/rules.mak
index 32827a8e69ac..50ce55625f89 100644
--- a/contrib/src/lame/rules.mak
+++ b/contrib/src/lame/rules.mak
@@ -15,6 +15,10 @@ lame: lame-$(LAME_VERSION).tar.gz .sum-lame
 ifdef HAVE_VISUALSTUDIO
 	$(APPLY) $(SRC)/lame/struct-float-copy.patch
 endif
+ifdef HAVE_DARWIN_OS
+	$(APPLY) $(SRC)/lame/invariant-for-energy-array.patch
+endif
+
 	# Avoid relying on iconv.m4 from gettext, when reconfiguring.
 	# This is only used by the frontend which we disable.
 	cd $(UNPACK_DIR) && sed -i.orig 's/^AM_ICONV/#&/' configure.in
-- 
2.21.0 (Apple Git-122.2)



More information about the vlc-devel mailing list