Hi, 2011/12/28 Måns Rullgård <[email protected]>: > Derek Buitenhuis <[email protected]> writes: > >> From: Stefano Sabatini <[email protected]> >> >> 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?
A check was placed in av_set_pts_info() which helps for callers that do av_set_pts_info(1, samplerate);. It doesn't help callers that do not do this. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
