On 8/4/2019 1:44 PM, Michael Niedermayer wrote:
> Fixes: index -1 out of bounds for type 'AV1ReferenceFrameState [8]'
> Fixes: 
> 16079/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5758807440883712
> 
> Found-by: continuous fuzzing process 
> https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
> ---
>  libavcodec/cbs_av1_syntax_template.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/cbs_av1_syntax_template.c 
> b/libavcodec/cbs_av1_syntax_template.c
> index b04cd51d55..806b302de6 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -419,16 +419,17 @@ static int 
> FUNC(frame_size_with_refs)(CodedBitstreamContext *ctx, RWContext *rw,
>      for (i = 0; i < AV1_REFS_PER_FRAME; i++) {
>          flags(found_ref[i], 1, i);
>          if (current->found_ref[i]) {
> -            AV1ReferenceFrameState *ref =
> -                &priv->ref[current->ref_frame_idx[i]];
> +            AV1ReferenceFrameState *ref;
>  
> -            if (!ref->valid) {
> +            if (current->ref_frame_idx[i] < 0 ||
> +                !priv->ref[current->ref_frame_idx[i]].valid) {
>                  av_log(ctx->log_ctx, AV_LOG_ERROR,
>                         "Missing reference frame needed for frame size "
>                         "(ref = %d, ref_frame_idx = %d).\n",
>                         i, current->ref_frame_idx[i]);
>                  return AVERROR_INVALIDDATA;
>              }
> +            ref = &priv->ref[current->ref_frame_idx[i]];
>  
>              priv->upscaled_width = ref->upscaled_width;
>              priv->frame_width    = ref->frame_width;

This actually revealed a bug when setting ref_frame_idx[i] in the
frame_refs_short_signaling == true code path. It's incomplete given that
the -1 is a placeholder meant to be replaced further into the process.

This change is ok to prevent the out of bounds issue for now, but valid
files are in theory being rejected, and that should be fixed.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to