static int decode0(GetByteContext *gb, RangeCoder *rc, unsigned cumFreq, unsigned freq, unsigned total_freq)
{
- int t;
+ unsigned t;
if (total_freq == 0)
return AVERROR_INVALIDDATA;
break;
c++;
}
+ if (x >= 16 || c >= 256) {
+ return AVERROR_INVALIDDATA;
+ }
if ((ret = s->decode(gb, rc, cumfr, cnt_c, totfr)) < 0)
return ret;
clr = (b << 16) + (g << 8) + r;
k += run;
while (run-- > 0) {
+ if (y >= avctx->height)
+ return AVERROR_INVALIDDATA;
+
dst[y * linesize + x] = clr;
lx = x;
ly = y;
if (avctx->bits_per_coded_sample == 16) {
cx1 = (clr & 0x3F00) >> 2;
- cx = (clr & 0xFFFFFF) >> 16;
+ cx = (clr & 0x3FFFFF) >> 16;
} else {
cx1 = (clr & 0xFC00) >> 4;
cx = (clr & 0xFFFFFF) >> 18;
if (avctx->bits_per_coded_sample == 16) {
cx1 = (clr & 0x3F00) >> 2;
- cx = (clr & 0xFFFFFF) >> 16;
+ cx = (clr & 0x3FFFFF) >> 16;
} else {
cx1 = (clr & 0xFC00) >> 4;
cx = (clr & 0xFFFFFF) >> 18;