diff options
author | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-09-14 21:02:19 +0000 |
---|---|---|
committer | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-09-14 21:02:19 +0000 |
commit | 7cd4d089bea1eec6b95a52f18dbee429dc06d4ed (patch) | |
tree | 16bfdba7b93aaa7aaa6f58f6538ba9a6e8d800ae /mp3lib | |
parent | 6f9cd1674c399bf88ba78e6428e5b6c06ee03eae (diff) | |
download | mpv-7cd4d089bea1eec6b95a52f18dbee429dc06d4ed.tar.bz2 mpv-7cd4d089bea1eec6b95a52f18dbee429dc06d4ed.tar.xz |
Index must be positive to prevent endless loop on bad data
Based on an idea by iive
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13337 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mp3lib')
-rw-r--r-- | mp3lib/layer2.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/mp3lib/layer2.c b/mp3lib/layer2.c index 8c1073943c..759d57521a 100644 --- a/mp3lib/layer2.c +++ b/mp3lib/layer2.c @@ -80,12 +80,12 @@ static void II_step_one(unsigned int *bit_alloc,int *scale,struct frame *fr) bita = bit_alloc; if(stereo) { - for (i=jsbound;i;i--,alloc1+=(1<<step)) + for (i=jsbound;i>0;i--,alloc1+=(1<<step)) { *bita++ = (char) getbits(step=alloc1->bits); *bita++ = (char) getbits(step); } - for (i=sblimit-jsbound;i;i--,alloc1+=(1<<step)) + for (i=sblimit-jsbound;i>0;i--,alloc1+=(1<<step)) { bita[0] = (char) getbits(step=alloc1->bits); bita[1] = bita[0]; @@ -93,24 +93,24 @@ static void II_step_one(unsigned int *bit_alloc,int *scale,struct frame *fr) } bita = bit_alloc; scfsi=scfsi_buf; - for (i=sblimit2;i;i--) + for (i=sblimit2;i>0;i--) if (*bita++) *scfsi++ = (char) getbits_fast(2); } else /* mono */ { - for (i=sblimit;i;i--,alloc1+=(1<<step)) + for (i=sblimit;i>0;i--,alloc1+=(1<<step)) *bita++ = (char) getbits(step=alloc1->bits); bita = bit_alloc; scfsi=scfsi_buf; - for (i=sblimit;i;i--) + for (i=sblimit;i>0;i--) if (*bita++) *scfsi++ = (char) getbits_fast(2); } bita = bit_alloc; scfsi=scfsi_buf; - for (i=sblimit2;i;i--) + for (i=sblimit2;i>0;i--) if (*bita++) switch (*scfsi++) { |