[FFmpeg-devel] [PATCH] cllc: Pad swapepd buffer

Derek Buitenhuis derek.buitenhuis at gmail.com
Sat Aug 25 04:17:39 CEST 2012


The bitstream buffer must be padded, or the bitstream reader might
read over the end.

Fixes the following valgrind warning:
    Use of uninitialised value of size 8 at 0x591BAE: cllc_decode_frame (cllc.c:166)

Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
---
 libavcodec/cllc.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cllc.c b/libavcodec/cllc.c
index af51c36..7625852 100644
--- a/libavcodec/cllc.c
+++ b/libavcodec/cllc.c
@@ -284,7 +284,8 @@ static int cllc_decode_frame(AVCodecContext *avctx, void *data,
 
     /* Make sure our bswap16'd buffer is big enough */
     swapped_buf_new = av_fast_realloc(ctx->swapped_buf,
-                                      &ctx->swapped_buf_size, avpkt->size);
+                                      &ctx->swapped_buf_size, avpkt->size +
+                                      FF_INPUT_BUFFER_PADDING_SIZE);
     if (!swapped_buf_new) {
         av_log(avctx, AV_LOG_ERROR, "Could not realloc swapped buffer.\n");
         return AVERROR(ENOMEM);
@@ -313,6 +314,10 @@ static int cllc_decode_frame(AVCodecContext *avctx, void *data,
     ctx->dsp.bswap16_buf((uint16_t *) ctx->swapped_buf, (uint16_t *) src,
                          (avpkt->size - info_offset) / 2);
 
+    /* Initialize padding to 0 */
+    memset(ctx->swapped_buf + avpkt->size - info_offset,
+           0, FF_INPUT_BUFFER_PADDING_SIZE);
+
     init_get_bits(&gb, ctx->swapped_buf, (avpkt->size - info_offset) * 8);
 
     /*
-- 
1.7.10.4



More information about the ffmpeg-devel mailing list