diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-05-28 19:13:10 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-09 22:38:14 +0400 |
commit | fa67ad85ac7ef186cfcfb5aaca5d7f743d373220 (patch) | |
tree | 1cf31b1d70f56680aa1c8bfb1e2943d21649bbfb | |
parent | 0adc452146a9fc31184db783b3fc4bbea5767ade (diff) |
iff_ilbm: fix null ptr deref
Fixes Ticket1362
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 849d4b041351ef8d77c4231cf417f997e79f9ab7)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/iff.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 978507bbe3..8a9141af5a 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -191,7 +191,13 @@ static int extract_header(AVCodecContext *const avctx, const uint8_t *buf; unsigned buf_size; IffContext *s = avctx->priv_data; - int palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); + int palette_size; + + if (avctx->extradata_size < 2) { + av_log(avctx, AV_LOG_ERROR, "not enough extradata\n"); + return AVERROR_INVALIDDATA; + } + palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); if (avpkt) { int image_size; @@ -207,8 +213,6 @@ static int extract_header(AVCodecContext *const avctx, return AVERROR_INVALIDDATA; } } else { - if (avctx->extradata_size < 2) - return AVERROR_INVALIDDATA; buf = avctx->extradata; buf_size = bytestream_get_be16(&buf); if (buf_size <= 1 || palette_size < 0) { |