[FFmpeg-devel] [PATCH 1/2] avcodec/speexdec: relax the extradata check for the speex string

James Almer jamrial at gmail.com
Sat Jan 20 03:47:29 EET 2024


There could be bogus bytes at the start, as is the case of
vp5/potter512-400-partial.avi from the FATE suite, which could be a case of bad
remuxing from an OGG source.

Partially fixes decoding of vp5/potter512-400-partial.avi

Signed-off-by: James Almer <jamrial at gmail.com>
---
 libavcodec/speexdec.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/speexdec.c b/libavcodec/speexdec.c
index 08c7e77e7d..c73b2a7ec2 100644
--- a/libavcodec/speexdec.c
+++ b/libavcodec/speexdec.c
@@ -52,6 +52,7 @@
  */
 
 #include "libavutil/avassert.h"
+#include "libavutil/avstring.h"
 #include "libavutil/float_dsp.h"
 #include "avcodec.h"
 #include "bytestream.h"
@@ -1397,9 +1398,9 @@ static int parse_speex_extradata(AVCodecContext *avctx,
     const uint8_t *extradata, int extradata_size)
 {
     SpeexContext *s = avctx->priv_data;
-    const uint8_t *buf = extradata;
+    const uint8_t *buf = av_strnstr(extradata, "Speex   ", extradata_size);
 
-    if (memcmp(buf, "Speex   ", 8))
+    if (!buf)
         return AVERROR_INVALIDDATA;
 
     buf += 28;
-- 
2.43.0



More information about the ffmpeg-devel mailing list