Message ID | a84036b6-ba3e-3189-f840-cd4cf33b48a5@googlemail.com |
---|---|
State | Superseded |
Headers | show |
> On Dec 15, 2016, at 20:32, Andreas Cadhalpun <andreas.cadhalpun@googlemail.com> wrote: > > Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> > --- > libavformat/4xm.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/libavformat/4xm.c b/libavformat/4xm.c > index 2758b69..9332f78 100644 > --- a/libavformat/4xm.c > +++ b/libavformat/4xm.c > @@ -187,6 +187,7 @@ static int parse_strk(AVFormatContext *s, > st->codecpar->bit_rate = (int64_t)st->codecpar->channels * > st->codecpar->sample_rate * > st->codecpar->bits_per_coded_sample; > + FF_BAIL_ON_OVERFLOW(s, st->codecpar->channels && st->codecpar->bits_per_coded_sample > INT_MAX / st->codecpar->channels) Shouldn't this go before the actual (potentially-overflowing) calculation is done? > st->codecpar->block_align = st->codecpar->channels * > st->codecpar->bits_per_coded_sample; > > -- > 2.10.2 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
On 16.12.2016 03:33, Rodger Combs wrote: > >> On Dec 15, 2016, at 20:32, Andreas Cadhalpun <andreas.cadhalpun@googlemail.com> wrote: >> >> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> >> --- >> libavformat/4xm.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/libavformat/4xm.c b/libavformat/4xm.c >> index 2758b69..9332f78 100644 >> --- a/libavformat/4xm.c >> +++ b/libavformat/4xm.c >> @@ -187,6 +187,7 @@ static int parse_strk(AVFormatContext *s, >> st->codecpar->bit_rate = (int64_t)st->codecpar->channels * >> st->codecpar->sample_rate * >> st->codecpar->bits_per_coded_sample; >> + FF_BAIL_ON_OVERFLOW(s, st->codecpar->channels && st->codecpar->bits_per_coded_sample > INT_MAX / st->codecpar->channels) > > Shouldn't this go before the actual (potentially-overflowing) calculation is done? It is. >> st->codecpar->block_align = st->codecpar->channels * >> st->codecpar->bits_per_coded_sample; This here is the problem. Best regards, Andreas
On Fri, Dec 16, 2016 at 03:32:42AM +0100, Andreas Cadhalpun wrote: > Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> > --- > libavformat/4xm.c | 1 + > 1 file changed, 1 insertion(+) should be ok [...]
diff --git a/libavformat/4xm.c b/libavformat/4xm.c index 2758b69..9332f78 100644 --- a/libavformat/4xm.c +++ b/libavformat/4xm.c @@ -187,6 +187,7 @@ static int parse_strk(AVFormatContext *s, st->codecpar->bit_rate = (int64_t)st->codecpar->channels * st->codecpar->sample_rate * st->codecpar->bits_per_coded_sample; + FF_BAIL_ON_OVERFLOW(s, st->codecpar->channels && st->codecpar->bits_per_coded_sample > INT_MAX / st->codecpar->channels) st->codecpar->block_align = st->codecpar->channels * st->codecpar->bits_per_coded_sample;
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> --- libavformat/4xm.c | 1 + 1 file changed, 1 insertion(+)