summaryrefslogtreecommitdiff
path: root/libavcodec/iff.c
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2012-03-12 10:32:11 +1100
committerPeter Ross <pross@xvid.org>2012-03-13 21:56:19 +1100
commite05253bf49e19c601c9d4a872c4f7f985797e163 (patch)
treefe13f9d55690ceb6b0c6e9ed0e938e9d53f1cbed /libavcodec/iff.c
parentb25a265a5c921d2d223a8aeff2f918894d515934 (diff)
iff: do not decode unsupported pbms with ham decoder
This prevents the segfault reported by ticket #1054
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 fdeba14fa7..925d92815a 100644
--- a/libavcodec/iff.c
+++ b/libavcodec/iff.c
@@ -638,12 +638,15 @@ static int decode_frame_byterun1(AVCodecContext *avctx,
uint8_t *row = &s->frame.data[0][y*s->frame.linesize[0]];
buf += decode_byterun(row, avctx->width, buf, buf_end);
}
- } 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]];
buf += decode_byterun(s->ham_buf, avctx->width, buf, buf_end);
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;
}
}