Mercurial > libavcodec.hg
comparison lcldec.c @ 9763:d359d5ee74b9 libavcodec
Change buffer size checks to avoid the undefined overflow case.
author | reimar |
---|---|
date | Sun, 31 May 2009 10:23:38 +0000 |
parents | 3242ae563430 |
children | dd6bcbec3c24 |
comparison
equal
deleted
inserted
replaced
9762:3242ae563430 | 9763:d359d5ee74b9 |
---|---|
85 maskbit = 8; | 85 maskbit = 8; |
86 srclen--; | 86 srclen--; |
87 continue; | 87 continue; |
88 } | 88 } |
89 if ((mask & (1 << (--maskbit))) == 0) { | 89 if ((mask & (1 << (--maskbit))) == 0) { |
90 if (destptr + 4 > destptr_end) | 90 if (destptr_end - destptr < 4) |
91 break; | 91 break; |
92 memcpy(destptr, srcptr, 4); | 92 memcpy(destptr, srcptr, 4); |
93 srclen -= 4; | 93 srclen -= 4; |
94 destptr += 4; | 94 destptr += 4; |
95 srcptr += 4; | 95 srcptr += 4; |
99 ofs += cnt * 256; | 99 ofs += cnt * 256; |
100 cnt = ((cnt >> 3) & 0x1f) + 1; | 100 cnt = ((cnt >> 3) & 0x1f) + 1; |
101 ofs &= 0x7ff; | 101 ofs &= 0x7ff; |
102 srclen -= 2; | 102 srclen -= 2; |
103 cnt *= 4; | 103 cnt *= 4; |
104 if (destptr + cnt > destptr_end) { | 104 if (destptr_end - destptr < cnt) { |
105 cnt = destptr_end - destptr; | 105 cnt = destptr_end - destptr; |
106 } | 106 } |
107 for (; cnt > 0; cnt--) { | 107 for (; cnt > 0; cnt--) { |
108 *destptr = *(destptr - ofs); | 108 *destptr = *(destptr - ofs); |
109 destptr++; | 109 destptr++; |