comparison mp3lib/layer2.c @ 13336:55174e3d2917

Index must be positive to prevent endless loop on bad data Based on an idea by iive
author rtognimp
date Tue, 14 Sep 2004 21:02:19 +0000
parents d155623271e3
children 07e7a572bd84
comparison
equal deleted inserted replaced
13335:6c002b4462ae 13336:55174e3d2917
78 int sc,step; 78 int sc,step;
79 79
80 bita = bit_alloc; 80 bita = bit_alloc;
81 if(stereo) 81 if(stereo)
82 { 82 {
83 for (i=jsbound;i;i--,alloc1+=(1<<step)) 83 for (i=jsbound;i>0;i--,alloc1+=(1<<step))
84 { 84 {
85 *bita++ = (char) getbits(step=alloc1->bits); 85 *bita++ = (char) getbits(step=alloc1->bits);
86 *bita++ = (char) getbits(step); 86 *bita++ = (char) getbits(step);
87 } 87 }
88 for (i=sblimit-jsbound;i;i--,alloc1+=(1<<step)) 88 for (i=sblimit-jsbound;i>0;i--,alloc1+=(1<<step))
89 { 89 {
90 bita[0] = (char) getbits(step=alloc1->bits); 90 bita[0] = (char) getbits(step=alloc1->bits);
91 bita[1] = bita[0]; 91 bita[1] = bita[0];
92 bita+=2; 92 bita+=2;
93 } 93 }
94 bita = bit_alloc; 94 bita = bit_alloc;
95 scfsi=scfsi_buf; 95 scfsi=scfsi_buf;
96 for (i=sblimit2;i;i--) 96 for (i=sblimit2;i>0;i--)
97 if (*bita++) 97 if (*bita++)
98 *scfsi++ = (char) getbits_fast(2); 98 *scfsi++ = (char) getbits_fast(2);
99 } 99 }
100 else /* mono */ 100 else /* mono */
101 { 101 {
102 for (i=sblimit;i;i--,alloc1+=(1<<step)) 102 for (i=sblimit;i>0;i--,alloc1+=(1<<step))
103 *bita++ = (char) getbits(step=alloc1->bits); 103 *bita++ = (char) getbits(step=alloc1->bits);
104 bita = bit_alloc; 104 bita = bit_alloc;
105 scfsi=scfsi_buf; 105 scfsi=scfsi_buf;
106 for (i=sblimit;i;i--) 106 for (i=sblimit;i>0;i--)
107 if (*bita++) 107 if (*bita++)
108 *scfsi++ = (char) getbits_fast(2); 108 *scfsi++ = (char) getbits_fast(2);
109 } 109 }
110 110
111 bita = bit_alloc; 111 bita = bit_alloc;
112 scfsi=scfsi_buf; 112 scfsi=scfsi_buf;
113 for (i=sblimit2;i;i--) 113 for (i=sblimit2;i>0;i--)
114 if (*bita++) 114 if (*bita++)
115 switch (*scfsi++) 115 switch (*scfsi++)
116 { 116 {
117 case 0: 117 case 0:
118 *scale++ = getbits_fast(6); 118 *scale++ = getbits_fast(6);