Remove VLA in ff_kbd_window_init, limit window size to 1024
authorMåns Rullgård <mans@mansr.com>
Thu, 24 Jun 2010 09:42:34 +0000 (09:42 +0000)
committerMåns Rullgård <mans@mansr.com>
Thu, 24 Jun 2010 09:42:34 +0000 (09:42 +0000)
Originally committed as revision 23755 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/fft.h
libavcodec/mdct.c

index 1f5b2e8..10ca1b1 100644 (file)
@@ -151,10 +151,15 @@ static inline void ff_mdct_calc(FFTContext *s, FFTSample *output,
 }
 
 /**
+ * Maximum window size for ff_kbd_window_init.
+ */
+#define FF_KBD_WINDOW_MAX 1024
+
+/**
  * Generate a Kaiser-Bessel Derived Window.
  * @param   window  pointer to half window
  * @param   alpha   determines window shape
- * @param   n       size of half window
+ * @param   n       size of half window, max FF_KBD_WINDOW_MAX
  */
 void ff_kbd_window_init(float *window, float alpha, int n);
 
index 69e1bbf..c511188 100644 (file)
@@ -36,9 +36,11 @@ av_cold void ff_kbd_window_init(float *window, float alpha, int n)
 {
    int i, j;
    double sum = 0.0, bessel, tmp;
-   double local_window[n];
+   double local_window[FF_KBD_WINDOW_MAX];
    double alpha2 = (alpha * M_PI / n) * (alpha * M_PI / n);
 
+   assert(n <= FF_KBD_WINDOW_MAX);
+
    for (i = 0; i < n; i++) {
        tmp = i * (n - i) * alpha2;
        bessel = 1.0;