ac3dec: Don't consume more data than the actual input packet size
authorMartin Storsjö <martin@martin.st>
Mon, 15 Jul 2013 08:28:46 +0000 (11:28 +0300)
committerMartin Storsjö <martin@martin.st>
Mon, 15 Jul 2013 18:37:21 +0000 (21:37 +0300)
This was handled properly in the normal return case at the end
of the function, but not in this special case.

Returning a value larger than the input packet size can cause
problems for certain library users.

Returning the actual input buffer size unconditionally, since
it is not guaranteed that frame_size is set to a sensible
value at this point.

Cc: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/ac3dec.c

index 512d54b..6a2792e 100644 (file)
@@ -1308,7 +1308,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data,
                 av_log(avctx, AV_LOG_ERROR, "unsupported frame type : "
                        "skipping frame\n");
                 *got_frame_ptr = 0;
-                return s->frame_size;
+                return buf_size;
             } else {
                 av_log(avctx, AV_LOG_ERROR, "invalid frame type\n");
             }