diff ac3dec.c @ 8279:6c2dcc1410bb libavcodec

ac3: detect dba errors and prevent writing past end of array
author jbr
date Mon, 08 Dec 2008 03:13:20 +0000
parents e2ef97f0ab4b
children 63aba08af550
line wrap: on
line diff
--- a/ac3dec.c	Sun Dec 07 16:30:08 2008 +0000
+++ b/ac3dec.c	Mon Dec 08 03:13:20 2008 +0000
@@ -1133,12 +1133,15 @@
         if(bit_alloc_stages[ch] > 1) {
             /* Compute excitation function, Compute masking curve, and
                Apply delta bit allocation */
-            ff_ac3_bit_alloc_calc_mask(&s->bit_alloc_params, s->band_psd[ch],
+            if (ff_ac3_bit_alloc_calc_mask(&s->bit_alloc_params, s->band_psd[ch],
                                        s->start_freq[ch], s->end_freq[ch],
                                        s->fast_gain[ch], (ch == s->lfe_ch),
                                        s->dba_mode[ch], s->dba_nsegs[ch],
                                        s->dba_offsets[ch], s->dba_lengths[ch],
-                                       s->dba_values[ch], s->mask[ch]);
+                                       s->dba_values[ch], s->mask[ch])) {
+                av_log(s->avctx, AV_LOG_ERROR, "error in bit allocation\n");
+                return -1;
+            }
         }
         if(bit_alloc_stages[ch] > 0) {
             /* Compute bit allocation */