[FFmpeg-devel] [PATCH] aacpsy: avoid norm_fac becoming NaN

Michael Niedermayer michaelni at gmx.at
Thu Apr 16 20:18:54 CEST 2015


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.cadhalpun at 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.Cadhalpun at 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"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150416/8eb30b5f/attachment.asc>


More information about the ffmpeg-devel mailing list