Derek Buitenhuis <derek.buitenh...@gmail.com> writes:

> From: Stefano Sabatini <stefa...@gmail.com>
>
> Prevent error condition in case sample_rate is unset or set to a negative
> value. In particular, fix divide-by-zero error occurring in ffmpeg due to
> sample_rate set to 0 in output_packet(), in code:
>
>                 ist->next_pts += ((int64_t)AV_TIME_BASE * 
> ist->st->codec->frame_size) /
>                     ist->st->codec->sample_rate;
> ---
>  libavformat/rawdec.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/libavformat/rawdec.c b/libavformat/rawdec.c
> index 33a0447..6be48c5 100644
> --- a/libavformat/rawdec.c
> +++ b/libavformat/rawdec.c
> @@ -57,6 +57,12 @@ int ff_raw_read_header(AVFormatContext *s, 
> AVFormatParameters *ap)
>
>              if (s1 && s1->sample_rate)
>                  st->codec->sample_rate = s1->sample_rate;
> +            if (st->codec->sample_rate <= 0) {
> +                av_log(s, AV_LOG_ERROR, "Invalid sample rate %d specified\n",
> +                       st->codec->sample_rate);
> +                return AVERROR(EINVAL);
> +            }
> +
>              if (s1 && s1->channels)
>                  st->codec->channels    = s1->channels;
>
> -- 

Looks like it belongs in a more central place to avoid scattering such
checks across all demuxers.  Hasn't this come up before?

-- 
Måns Rullgård
m...@mansr.com
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to