summaryrefslogtreecommitdiff
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-19 16:33:05 +0200
commit4fd21d58a72c38ab63c3a4483b420db260fa7b8d (patch)
treed1ccabe211e3a960fd1288c33081e0cbb448dc46
parent59af5383c18c8cf3fe2a4b5cc1ebf2f3300bdfe5 (diff)
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
-rw-r--r--libavcodec/webp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/webp.c b/libavcodec/webp.c
index c737f5492d..66c2d57c84 100644
--- a/libavcodec/webp.c
+++ b/libavcodec/webp.c
@@ -1028,7 +1028,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];
@@ -1066,11 +1066,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);
}
}