From 52750366ed81b8d91f0daae416334e6195e054c1 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Thu, 17 May 2007 16:33:45 +0000
Subject: [PATCH] maybe fix the stupid bug in the mp3 decoder code

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5198 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/formats/mod_shout/layer3.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/mod/formats/mod_shout/layer3.c b/src/mod/formats/mod_shout/layer3.c
index ec8eeda77a..490178df2c 100644
--- a/src/mod/formats/mod_shout/layer3.c
+++ b/src/mod/formats/mod_shout/layer3.c
@@ -826,9 +826,23 @@ static int III_dequantize_sample(struct mpstr *mp, real xr[SBLIMIT][SSLIMIT], in
 				int x, y;
 
 				if (!mc) {
+					unsigned sanity;
 					mc = *m++;
-					v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
-					cb = *m++;
+					if ((unsigned)*scf < 100 && (unsigned)*pretab < 100) {
+						sanity = (((*scf++) + (*pretab++)) << shift);
+					
+						//v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
+						if (sanity < 100) {
+							v = gr_info->pow2gain[sanity];
+							cb = *m++;
+						} else {
+							return 1;
+						}
+
+					} else {
+						return 1;
+					}
+
 				}
 				{
 					register short *val = h->table;