On 2014-01-06 08:36:34 +0100, Anton Khirnov wrote:
> 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:[email protected]
> ---
>  libavcodec/h264.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/h264.c b/libavcodec/h264.c
> index 7d49d48..47fb76d 100644
> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -3619,8 +3619,11 @@ static int decode_slice_header(H264Context *h, 
> H264Context *h0)
>              av_log(h->avctx, AV_LOG_DEBUG, "Frame num gap %d %d\n",
>                     h->frame_num, h->prev_frame_num);
>              ret = h264_frame_start(h);
> -            if (ret < 0)
> +            if (ret < 0) {
> +                h0->first_field = 0;
>                  return ret;
> +            }
> +
>              h->prev_frame_num++;
>              h->prev_frame_num        %= 1 << h->sps.log2_max_frame_num;
>              h->cur_pic_ptr->frame_num = h->prev_frame_num;

ok

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to