OSDN Git Service

vp9_parser: fix endless loop w/0-sized frame
authorJames Zern <jzern@google.com>
Fri, 16 Oct 2015 22:28:55 +0000 (15:28 -0700)
committerJames Zern <jzern@google.com>
Mon, 19 Oct 2015 19:10:52 +0000 (12:10 -0700)
treat this the same as an over-sized superframe packet to break out of
the parser loop and allow the decoder to fail.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
libavcodec/vp9_parser.c

index f1f7e35..0437097 100644 (file)
@@ -111,12 +111,12 @@ static int parse(AVCodecParserContext *ctx,
                 while (n_frames--) { \
                     unsigned sz = rd; \
                     idx += a; \
-                    if (sz > size) { \
+                    if (sz == 0 || sz > size) { \
                         s->n_frames = 0; \
                         *out_size = size; \
                         *out_data = data; \
                         av_log(avctx, AV_LOG_ERROR, \
-                               "Superframe packet size too big: %u > %d\n", \
+                               "Invalid superframe packet size: %u frame size: %d\n", \
                                sz, size); \
                         return full_size; \
                     } \