avcodec/speexdec: consider differing frame sizes in remaining space check
authorMichael Niedermayer <michael@niedermayer.cc>
Fri, 27 Jun 2025 16:09:24 +0000 (18:09 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 4 Aug 2025 14:36:10 +0000 (16:36 +0200)
Fixes: talk109-q5.spx
Regression since: f6986e75be87f512f65d64ac91ba19d505a8d210

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit cfd1f81e7d06e64cc03d670bafe739cc8925f5be)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/speexdec.c

index 0870bba5c71ad2bed9366e1846b5967b58fb62fe..1040c5de2aeb121bb2255a75a1adbac70ff0f42e 100644 (file)
@@ -1231,7 +1231,7 @@ static int sb_decode(AVCodecContext *avctx, void *ptr_st,
     mode = st->mode;
 
     if (st->modeID > 0) {
-        if (packets_left <= 1)
+        if (packets_left * s->frame_size < 2*st->frame_size)
             return AVERROR_INVALIDDATA;
         low_innov_alias = out + st->frame_size;
         s->st[st->modeID - 1].innov_save = low_innov_alias;