[FFmpeg-devel] [PATCH 1/4] avformat/audiointerleave: Check before dereferencing

Paul B Mahol onemda at gmail.com
Sun Jan 26 12:38:17 EET 2020


lgtm

On 1/26/20, Andreas Rheinhardt <andreas.rheinhardt at gmail.com> wrote:
> In order to use ff_audio_rechunk_interleave() (a special interleavement
> function for situations where the ordinary "interleave by dts" is not
> appropriate), the AVStreams must have private data and this private data
> must begin with an AudioInterleaveContext which contains a fifo that may
> need to be freed and when ff_audio_interleave_close() was called, it just
> assumed that everything has been properly set up, i.e. that every streams
> priv_data exists. This implies that this function can not be called from
> the deinit function of a muxer, because such functions might be called
> if the private data has not been successfully allocated. In order to
> change this, add a check for whether the private data exists before
> trying to free the fifo in it.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavformat/audiointerleave.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c
> index b602eb7105..6797546a44 100644
> --- a/libavformat/audiointerleave.c
> +++ b/libavformat/audiointerleave.c
> @@ -33,7 +33,7 @@ void ff_audio_interleave_close(AVFormatContext *s)
>          AVStream *st = s->streams[i];
>          AudioInterleaveContext *aic = st->priv_data;
>
> -        if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
> +        if (aic && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
>              av_fifo_freep(&aic->fifo);
>      }
>  }
> --
> 2.20.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list