codecs/speex: add checks in speex_resampler_init_frac/set_rate_frac.
authorDario Lombardo <lomato@gmail.com>
Thu, 22 Sep 2016 09:03:07 +0000 (11:03 +0200)
committerTristan Matthews <tmatth@videolan.org>
Thu, 22 Sep 2016 12:55:51 +0000 (08:55 -0400)
Add checks to avoid den_rate and num_rate to be set to 0.

Change-Id: Ia4880521e7ab73d0fdc44377f4badadb09365471
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Signed-off-by: Dario Lombardo <lomato@gmail.com>
Signed-off-by: Tristan Matthews <tmatth@videolan.org>
libspeexdsp/resample.c

index aadf685..9fbb5dd 100644 (file)
@@ -802,7 +802,7 @@ EXPORT SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels,
    SpeexResamplerState *st;
    int filter_err;
 
-   if (quality > 10 || quality < 0)
+   if (nb_channels == 0 || ratio_num == 0 || ratio_den == 0 || quality > 10 || quality < 0)
    {
       if (err)
          *err = RESAMPLER_ERR_INVALID_ARG;
@@ -1111,6 +1111,10 @@ EXPORT int speex_resampler_set_rate_frac(SpeexResamplerState *st, spx_uint32_t r
    spx_uint32_t fact;
    spx_uint32_t old_den;
    spx_uint32_t i;
+
+   if (ratio_num == 0 || ratio_den == 0)
+      return RESAMPLER_ERR_INVALID_ARG;
+
    if (st->in_rate == in_rate && st->out_rate == out_rate && st->num_rate == ratio_num && st->den_rate == ratio_den)
       return RESAMPLER_ERR_SUCCESS;