[vlc-devel] [PATCH] contribs: lame: Add assertion to make sure fftenergy is not read OoB
Felix Paul Kühne
fkuehne at videolan.org
Mon Dec 23 15:36:03 CET 2019
Hello,
Is there a reason why this wasn’t merged?
Thanks!
Felix
> On 2. Dec 2019, at 10:37, david.fuhrmann at gmail.com wrote:
>
> 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)
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list