Message ID | 20240120014730.53635-1-jamrial@gmail.com |
---|---|
State | Accepted |
Commit | cad35f0a7740a96740aa9367c401a36c86522245 |
Headers | show |
Series | [FFmpeg-devel,1/2] avcodec/speexdec: relax the extradata check for the speex string | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
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;
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@gmail.com> --- libavcodec/speexdec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)