summaryrefslogtreecommitdiff
path: root/libavcodec/iff.c
diff options
context:
space:
mode:
authorPiotr Bandurski <ami_stuff@o2.pl>2012-03-29 04:59:58 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-03-29 04:59:58 +0200
commitddd8974008918e3e8ecc209843d9a228036bede9 (patch)
treef44c67ab7c4221719307139fc684d23493b79009 /libavcodec/iff.c
parentaebce0b0fa40c7ce7ac31eabe1d16c72c6d4a035 (diff)
iff: prevent a possible crash with broken/prepared IFF PBM
Based on fix by Peter Ross for ticket #1054. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/iff.c')
-rw-r--r--libavcodec/iff.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/iff.c b/libavcodec/iff.c
index ae479492b6..851da394a9 100644
--- a/libavcodec/iff.c
+++ b/libavcodec/iff.c
@@ -553,13 +553,16 @@ static int decode_frame_ilbm(AVCodecContext *avctx,
memcpy(row, buf, FFMIN(avctx->width, buf_end - buf));
buf += avctx->width + (avctx->width % 2); // padding if odd
}
- } else { // IFF-PBM: HAM to PIX_FMT_BGR32
+ } else if (s->ham) { // IFF-PBM: HAM to PIX_FMT_BGR32
for (y = 0; y < avctx->height; y++) {
uint8_t *row = &s->frame.data[0][ y*s->frame.linesize[0] ];
memcpy(s->ham_buf, buf, FFMIN(avctx->width, buf_end - buf));
buf += avctx->width + (avctx->width & 1); // padding if odd
decode_ham_plane32((uint32_t *) row, s->ham_buf, s->ham_palbuf, s->planesize);
}
+ } else {
+ av_log_ask_for_sample(avctx, "unsupported bpp\n");
+ return AVERROR_INVALIDDATA;
}
}