On Thu, Apr 16, 2015 at 02:41:39PM -0300, Claudio Freire wrote: > On Thu, Apr 16, 2015 at 1:00 PM, Andreas Cadhalpun > <andreas.cadhal...@googlemail.com> wrote: > > If both band->active_lines and band->thr are 0.0f, the division is > > undefined, making norm_fac not a number. > > > > NaN is passed on to other variables until it finally reaches > > sce->sf_idx and is converted to an integer (-2147483648). > > > > This causes a segmentation fault when it is used as array index. > > > > Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> > > --- > > libavcodec/aacpsy.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c > > index d1e65f6..b71933b 100644 > > --- a/libavcodec/aacpsy.c > > +++ b/libavcodec/aacpsy.c > > @@ -727,7 +727,10 @@ static void psy_3gpp_analyze_channel(FFPsyContext > > *ctx, int channel, > > if (active_lines > 0.0f) > > band->thr = calc_reduced_thr_3gpp(band, > > coeffs[g].min_snr, reduction); > > pe += calc_pe_3gpp(band); > > - band->norm_fac = band->active_lines / band->thr; > > + if (band->active_lines != 0.0f) > > + band->norm_fac = band->active_lines / band->thr; > > + else > > + band->norm_fac = 0.0f; > > norm_fac += band->norm_fac; > > } > > } > >
> It should be if band->thr > 0.0f, ok, thanks > all divisions by zero return > something that casts into an ~1: casting NaN or any out of int range value to int is undefined AFAIK [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The real ebay dictionary, page 3 "Rare item" - "Common item with rare defect or maybe just a lie" "Professional" - "'Toy' made in china, not functional except as doorstop" "Experts will know" - "The seller hopes you are not an expert"
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel