[FFmpeg-devel] [PATCH 3/8] avcodec/dpx: Check elements in 12bps planar path

Carl Eugen Hoyos ceffmpeg at gmail.com
Thu Jun 28 01:56:29 EEST 2018


2018-06-27 20:11 GMT+02:00, Michael Niedermayer <michael at niedermayer.cc>:
> Fixes: null pointer dereference
> Fixes:
> 8946/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DPX_fuzzer-5078915222601728
>
> Found-by: continuous fuzzing process
> https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavcodec/dpx.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/dpx.c b/libavcodec/dpx.c
> index f75e2cbbca..cf23bb6ba1 100644
> --- a/libavcodec/dpx.c
> +++ b/libavcodec/dpx.c
> @@ -395,12 +395,14 @@ static int decode_frame(AVCodecContext *avctx,
>                      if (elements == 4)
>                          *dst[3]++ = read16(&buf, endian) >> shift & 0xFFF;
>                  } else {
> -                    *dst[2]++ = read12in32(&buf, &rgbBuffer,
> -                                           &n_datum, endian);
> +                    if (elements >= 3)
> +                        *dst[2]++ = read12in32(&buf, &rgbBuffer,
> +                                               &n_datum, endian);
>                      *dst[0]++ = read12in32(&buf, &rgbBuffer,
>                                             &n_datum, endian);
> -                    *dst[1]++ = read12in32(&buf, &rgbBuffer,
> -                                           &n_datum, endian);
> +                    if (elements >= 2)
> +                        *dst[1]++ = read12in32(&buf, &rgbBuffer,
> +                                               &n_datum, endian);
>                      if (elements == 4)
>                          *dst[3]++ = read12in32(&buf, &rgbBuffer,
>                                                 &n_datum, endian);

Looks good to me, please commit.

Sorry, Carl Eugen


More information about the ffmpeg-devel mailing list