Hi, On Wed, Sep 21, 2011 at 1:17 PM, Alex Converse <[email protected]> wrote: > On Wed, Sep 21, 2011 at 10:36 AM, Kostya Shishkov > <[email protected]> wrote: >> On Wed, Sep 21, 2011 at 02:07:13PM +0200, Tomas Härdin wrote: >>> 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. >> >> Added checks here plus some small improvements. >> > > +static void decode_slice_plane(ProresContext *ctx, const uint8_t *buf, > + int data_size, uint16_t *out_ptr, > + int linesize, int mbs_per_slice, > + int blocks_per_mb, int plane_size_factor, > + const int16_t *qmat) > +{ > + GetBitContext gb; > + DECLARE_ALIGNED(16, DCTELEM, blocks[8 * 4 * 64]); > > LOCAL_ALIGNED? > > Other than that I think this looks pretty reasonable and we should > commit what we have and continue to improve it with additional > patches.
+1. Go for it. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
