[FFmpeg-cvslog] h264: reset first_field if frame_start() fails for missing refs
Anton Khirnov
git at videolan.org
Mon Apr 21 15:39:45 CEST 2014
ffmpeg | branch: release/1.1 | Anton Khirnov <anton at khirnov.net> | Thu Nov 28 10:54:35 2013 +0100| [7fd6c9fb49573870b48a995947edc83eedd7e86e] | committer: Sean McGovern
h264: reset first_field if frame_start() fails for missing refs
In this case we may not have a current frame, while first_field being
set implies we do.
Fixes invalid reads.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable at libav.org
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7fd6c9fb49573870b48a995947edc83eedd7e86e
---
libavcodec/h264.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index f5f7de4..db336f0 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2910,8 +2910,10 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
Picture *prev = h->short_ref_count ? h->short_ref[0] : NULL;
av_log(h->s.avctx, AV_LOG_DEBUG, "Frame num gap %d %d\n",
h->frame_num, h->prev_frame_num);
- if (ff_h264_frame_start(h) < 0)
+ if (ff_h264_frame_start(h) < 0) {
+ s0->first_field = 0;
return -1;
+ }
h->prev_frame_num++;
h->prev_frame_num %= 1 << h->sps.log2_max_frame_num;
s->current_picture_ptr->frame_num = h->prev_frame_num;
More information about the ffmpeg-cvslog
mailing list