On 2013-12-16 22:26:00 +0100, Anton Khirnov wrote:
> It will be set when needed if the slice header is decoded successfully.
> Prevents the NAL_DPC code from assuming the slice header was decoded
> when it was not, leading to invalid reads.
> 
> Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
> CC:[email protected]
> ---
>  libavcodec/h264.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/libavcodec/h264.c b/libavcodec/h264.c
> index 07a93cf..a7355ac 100644
> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -3338,6 +3338,8 @@ static int decode_slice_header(H264Context *h, 
> H264Context *h0)
>      int needs_reinit = 0;
>      int field_pic_flag, bottom_field_flag;
>  
> +    h->data_partitioning = 0;
> +
>      h->me.qpel_put = h->h264qpel.put_h264_qpel_pixels_tab;
>      h->me.qpel_avg = h->h264qpel.avg_h264_qpel_pixels_tab;

I would prefer to unset data_partitioning in 'case NAL_DPA:' when
decode_slice_header() failed. that would also be the appropiate location
for a comment why data_partitioning is cleared.

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

Reply via email to