shithub: aacdec

Download patch

ref: ec15b298677838371c3cbcd986fddf28af13c1ba
parent: 45c7e44c812f42f3a8d7d6c765b96a3cf974524a
author: Fabian Greffrath <fabian@greffrath.com>
date: Mon Aug 31 06:00:37 EDT 2020

fix heap-buffer-overflow in mp4read.c

This originated from an integer overflow: If mp4config.frame.ents
would be read-in with a value of (uint32t)(-1), it would overflow to 0
in the size calculation for the allocation in the next line. The
malloc() function would then successfully return a pointer to a memory
region of size 0, which will cause a segfault when written to.

Fixes #57.

--- a/frontend/mp4read.c
+++ b/frontend/mp4read.c
@@ -353,7 +353,10 @@
     u32in();
     // Number of entries
     mp4config.frame.ents = u32in();
-    // fixme: check atom size
+
+    if (!(mp4config.frame.ents + 1))
+        return ERR_FAIL;
+
     mp4config.frame.data = malloc(sizeof(*mp4config.frame.data)
                                   * (mp4config.frame.ents + 1));