On 2014-01-01 13:00:59 +0100, Anton Khirnov wrote:
> If it was set before then we can end up trying to decode a slice without
> a valid slice header, which can lead to invalid memory access.
> 
> Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
> CC:[email protected]
> ---
>  libavcodec/h264.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/h264.c b/libavcodec/h264.c
> index 07a93cf..21c1b8f 100644
> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -4725,8 +4725,13 @@ again:
>                  hx->intra_gb_ptr =
>                  hx->inter_gb_ptr = NULL;
>  
> -                if ((err = decode_slice_header(hx, h)) < 0)
> +                if ((err = decode_slice_header(hx, h)) < 0) {
> +                    /* make sure data_partitioning is cleared if it was set
> +                     * before, so we don't try decoding a slice without a 
> valid
> +                     * slice header later */
> +                    h->data_partitioning = 0;
>                      break;
> +                }
>  
>                  hx->data_partitioning = 1;
>                  break;

ok

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

Reply via email to