summaryrefslogtreecommitdiff
path: root/libavcodec/h264dec.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-12-18 11:29:25 +0100
committerAnton Khirnov <anton@khirnov.net>2016-12-19 08:15:58 +0100
commit45286a625c6ced1f5c4c842244cbb4509429abba (patch)
treec55d728226f215230e375240d0caddc7a654ac88 /libavcodec/h264dec.c
parentc2fa6bb0e8703a7a6aa10e11f9ab36094416d83f (diff)
h264dec: make sure to only end a field if it has been started
Calling ff_h264_field_end() when the per-field state is not properly initialized leads to all kinds of undefined behaviour. CC: libav-stable@libav.org Bug-Id: 977 978 992
Diffstat (limited to 'libavcodec/h264dec.c')
-rw-r--r--libavcodec/h264dec.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 83b3ab3be1..54ded03bd8 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -757,7 +757,8 @@ out:
if (!(avctx->flags2 & AV_CODEC_FLAG2_CHUNKS) ||
(h->mb_y >= h->mb_height && h->mb_height)) {
- ff_h264_field_end(h, &h->slice_ctx[0], 0);
+ if (h->field_started)
+ ff_h264_field_end(h, &h->slice_ctx[0], 0);
*got_frame = 0;
if (h->output_frame->buf[0]) {