unsigned char pixel, count;
unsigned char *orig = out_buf;
- while (1) {
+ while (out_buf < out_end) {
if (bytestream2_get_bytes_left(&s->g) < 1)
return AVERROR_INVALIDDATA;
pixel = bytestream2_get_byteu(&s->g);
if (!(count = (pixel & 0x7f))) {
- return (out_buf - orig) / pixelstride;
+ break;
}
/* Check for buffer overflow. */
}
}
}
+ return (out_buf - orig) / pixelstride;
}
/**
dest_row -= s->linesize;
start_offset = bytestream2_get_be32(&g_table);
bytestream2_seek(&s->g, start_offset, SEEK_SET);
- if (expand_rle_row(s, dest_row + z, dest_row + FFABS(s->linesize),
+ if (expand_rle_row(s, dest_row + z, dest_row + s->width*s->depth,
s->depth) != s->width) {
return AVERROR_INVALIDDATA;
}