[FFmpeg-devel] [PATCH] avcodec/cbs_av1: change the assert in trailing_bits to accept zero bits when reading

James Almer jamrial at gmail.com
Sun Feb 10 22:45:01 EET 2019


On 2/10/2019 5:12 PM, James Almer wrote:
> If nb_bits is zero when reading an OBU, then it's not a bug in CBS but an
> invalid bitstream, and we should abort gracefully instead.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> rav1e is currently encoding invalid Metadata OBUs without trailing bits, which
> are triggering the assert when parsed by CBS. This change makes sure to instead
> report the bitstream as invalid and gracefully return with an error code
> instead of crashing.
> 
>  libavcodec/cbs_av1_syntax_template.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
> index 48f4fab514..02b4ed221c 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -45,7 +45,11 @@ static int FUNC(trailing_bits)(CodedBitstreamContext *ctx, RWContext *rw, int nb
>  {
>      int err;
>  
> +#ifdef READ
> +    av_assert0(nb_bits >= 0);
> +#else
>      av_assert0(nb_bits > 0);
> +#endif
>  
>      fixed(1, trailing_one_bit, 1);
>      --nb_bits;

Better version approved by Mark on IRC pushed instead.


More information about the ffmpeg-devel mailing list