aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Massimino <pascal.massimino@gmail.com>2014-09-16 17:01:07 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-09-20 18:40:33 +0200
commit99af97ea112d94e21946df219216b3c052e57702 (patch)
treefb96a28ef8e3cbd1364cdca34a52394eae857ae4
parent6c66ea5e73f25f9af8f48e2b44b003f0d2b15dcf (diff)
downloadffmpeg-99af97ea112d94e21946df219216b3c052e57702.tar.gz
libavcodec/webp: treat out-of-bound palette index as translucent black
See https://code.google.com/p/webp/issues/detail?id=206 for a description of the problem/fix. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> This patch makes the decoder follow the recommendation of the spec. There is some disagreement (see "[FFmpeg-devel] [PATCH]: libavcodec/webp") about what would be best to be written in the spec, so in case the spec is changed again, this potentially would need to be amended or reverted (cherry picked from commit 4fd21d58a72c38ab63c3a4483b420db260fa7b8d) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/webp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/webp.c b/libavcodec/webp.c
index 89c8f13176..ab25d7a0d4 100644
--- a/libavcodec/webp.c
+++ b/libavcodec/webp.c
@@ -1024,7 +1024,7 @@ static int apply_color_indexing_transform(WebPContext *s)
ImageContext *img;
ImageContext *pal;
int i, x, y;
- uint8_t *p, *pi;
+ uint8_t *p;
img = &s->image[IMAGE_ROLE_ARGB];
pal = &s->image[IMAGE_ROLE_COLOR_INDEXING];
@@ -1062,11 +1062,11 @@ static int apply_color_indexing_transform(WebPContext *s)
p = GET_PIXEL(img->frame, x, y);
i = p[2];
if (i >= pal->frame->width) {
- av_log(s->avctx, AV_LOG_ERROR, "invalid palette index %d\n", i);
- return AVERROR_INVALIDDATA;
+ AV_WB32(p, 0xFF000000);
+ } else {
+ const uint8_t *pi = GET_PIXEL(pal->frame, i, 0);
+ AV_COPY32(p, pi);
}
- pi = GET_PIXEL(pal->frame, i, 0);
- AV_COPY32(p, pi);
}
}