lagarith: pad RGB buffer by 1 byte.
authorRonald S. Bultje <rsbultje@gmail.com>
Fri, 3 Aug 2012 03:46:09 +0000 (20:46 -0700)
committerRonald S. Bultje <rsbultje@gmail.com>
Fri, 3 Aug 2012 18:09:17 +0000 (11:09 -0700)
For left HFYU prediction, we predict from the buffer buf+1 using 8- or
16-byte reads. This means that aligning the buffer by 16 bytes is in
itself not sufficient, because if the width itself is 16- or 8-byte
aligned, the buffer will not be padded, and thus a read of size 16 at
buf+1 will overflow boundaries at the right edge. Padding the buffer by
1 byte is sufficient to not overflow its boundaries.

Fixes bug 342.

libavcodec/lagarith.c

index 35f5a07..e72674c 100644 (file)
@@ -553,7 +553,7 @@ static int lag_decode_frame(AVCodecContext *avctx,
 
         if (!l->rgb_planes) {
             l->rgb_stride = FFALIGN(avctx->width, 16);
-            l->rgb_planes = av_malloc(l->rgb_stride * avctx->height * planes);
+            l->rgb_planes = av_malloc(l->rgb_stride * avctx->height * planes + 1);
             if (!l->rgb_planes) {
                 av_log(avctx, AV_LOG_ERROR, "cannot allocate temporary buffer\n");
                 return AVERROR(ENOMEM);