[FFmpeg-cvslog] iff: do not decode unsupported pbms with ham decoder

Peter Ross git at videolan.org
Tue Mar 13 11:57:36 CET 2012


ffmpeg | branch: master | Peter Ross <pross at xvid.org> | Mon Mar 12 10:32:11 2012 +1100| [e05253bf49e19c601c9d4a872c4f7f985797e163] | committer: Peter Ross

iff: do not decode unsupported pbms with ham decoder

This prevents the segfault reported by ticket #1054

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e05253bf49e19c601c9d4a872c4f7f985797e163
---

 libavcodec/iff.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/libavcodec/iff.c b/libavcodec/iff.c
index fdeba14..925d928 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;
         }
     }
 



More information about the ffmpeg-cvslog mailing list