On Wed, 2011-09-21 at 13:09 +0200, Diego Biurrun wrote:
> From: Maxim Poliakovski <[email protected]>
> +static int decode_frame_header(ProresContext *ctx, const uint8_t *buf,
> + const int data_size, AVCodecContext *avctx)
> +{
...
> +
> + ctx->qmat_changed = 0;
> + ptr = buf + 20;
> + flags = buf[19];
> + if (flags & 2) {
> + if (memcmp(ctx->qmat_luma, ptr, 64)) {
> + memcpy(ctx->qmat_luma, ptr, 64);
> + ctx->qmat_changed = 1;
> + }
Won't this read past the end of the buffer if 28 <= data_size < 28+64 or
thereabouts?
> + ptr += 64;
> + } else {
> + memset(ctx->qmat_luma, 4, 64);
> + ctx->qmat_changed = 1;
> + }
> +
> + if (flags & 1) {
> + if (memcmp(ctx->qmat_chroma, ptr, 64)) {
> + memcpy(ctx->qmat_chroma, ptr, 64);
> + ctx->qmat_changed = 1;
> + }
Ditto here.
/Tomas
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel