On 2/6/2021 9:22 AM, Michael Niedermayer wrote:
Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
---
  libavformat/mov.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 9406e42f49..70f76caff5 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7113,6 +7113,11 @@ static int mov_probe(const AVProbeData *p)
          if ((offset + 8) > (unsigned int)p->buf_size)
              break;
          size = AV_RB32(p->buf + offset);
+        if (size == 1 && offset + 16 > (unsigned int)p->buf_size) {
+            size = AV_RB64(p->buf+offset + 8);

Just curious, what happens when size == 1 and the buffer is too small? Is leaving it as a size of 1 still valid, or should it be handled as a format error (e.g. abort the loop)?


+        } else if (size == 0) {
+            size = p->buf_size - offset;
+        }
          tag = AV_RL32(p->buf + offset + 4);
          switch(tag) {
          /* check for obvious tags */

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to