On 9/24/2020 5:20 PM, Michael Niedermayer wrote:
> Fixes: member access within null pointer of type 'TileGroupInfo' (aka 'struct 
> TileGroupInfo')
> Fixes: 
> 25725/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AV1_fuzzer-5166692706287616
> 
> Found-by: continuous fuzzing process 
> https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
> ---
>  libavcodec/av1dec.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
> index 0bb04a3e44..cf3a78aad8 100644
> --- a/libavcodec/av1dec.c
> +++ b/libavcodec/av1dec.c
> @@ -209,6 +209,9 @@ static int get_tiles_info(AVCodecContext *avctx, const 
> AV1RawTileGroup *tile_gro
>      uint16_t tile_num, tile_row, tile_col;
>      uint32_t size = 0, size_bytes = 0;
>  
> +    if (s->tile_num != s->raw_frame_header->tile_cols * 
> s->raw_frame_header->tile_rows)
> +        return AVERROR_INVALIDDATA;

This shouldn't happen if a frame header was properly parsed. It sounds
like one wasn't yet s->raw_frame_header was left pointing to it.

Does the following also fix this crash?

> diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
> index 0bb04a3e44..e650d43d9e 100644
> --- a/libavcodec/av1dec.c
> +++ b/libavcodec/av1dec.c
> @@ -831,6 +831,9 @@ static int av1_decode_frame(AVCodecContext *avctx, void 
> *frame,
> 
>  end:
>      ff_cbs_fragment_reset(&s->current_obu);
> +    if (ret < 0)
> +        s->raw_frame_header = NULL;
> +
>      return ret;
>  }
>  
_______________________________________________
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