diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 7418f92d1b..88b34f3bf4 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -109,17 +109,22 @@ static int decode_frame(AVCodecContext *avctx, AVFrame * const p= (AVFrame*)&s->picture; uint8_t *dst; int stride; - int idlen, compr, y, w, h, bpp, flags; + int idlen, pal, compr, y, w, h, bpp, flags; int first_clr, colors, csize; /* parse image header */ CHECK_BUFFER_SIZE(buf, buf_end, 18, "header"); idlen = *buf++; - buf++; /* pal */ + pal = *buf++; compr = *buf++; first_clr = bytestream_get_le16(&buf); colors = bytestream_get_le16(&buf); csize = *buf++; + if (!pal && (first_clr || colors || csize)) { + av_log(avctx, AV_LOG_WARNING, "File without colormap has colormap information set.\n"); + // specification says we should ignore those value in this case + first_clr = colors = csize = 0; + } buf += 2; /* x */ y = bytestream_get_le16(&buf); w = bytestream_get_le16(&buf);