[FFmpeg-cvslog] avcodec/tiff: do not abort decoding if strips are available

Paul B Mahol git at videolan.org
Wed Oct 7 23:19:12 EEST 2020


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Oct  2 12:16:49 2020 +0200| [da5b3d002862d1e105002a6dc1567e6551860896] | committer: Paul B Mahol

avcodec/tiff: do not abort decoding if strips are available

Even if such files are invalid, they can be decoded just fine.
Also stored tiles may have bigger dimensions than displayed ones,
so do not abort decoding in such cases.

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

 libavcodec/tiff.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 359d613bb3..9bf08b1900 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -929,8 +929,8 @@ static int dng_decode_jpeg(AVCodecContext *avctx, AVFrame *frame,
         s->avctx_mjpeg->height == h / 2 &&
         s->avctx_mjpeg->pix_fmt == AV_PIX_FMT_GRAY16LE) {
         is_single_comp = 1;
-    } else if (s->avctx_mjpeg->width  == w &&
-               s->avctx_mjpeg->height == h &&
+    } else if (s->avctx_mjpeg->width  >= w &&
+               s->avctx_mjpeg->height >= h &&
                s->avctx_mjpeg->pix_fmt == (is_u16 ? AV_PIX_FMT_GRAY16 : AV_PIX_FMT_GRAY8)
               ) {
         is_single_comp = 0;
@@ -1923,8 +1923,7 @@ again:
     has_strip_bits = s->strippos || s->strips || s->stripoff || s->rps || s->sot || s->sstype || s->stripsize || s->stripsizesoff;
 
     if (has_tile_bits && has_strip_bits) {
-        av_log(avctx, AV_LOG_ERROR, "Tiled TIFF is not allowed to strip\n");
-        return AVERROR_INVALIDDATA;
+        av_log(avctx, AV_LOG_WARNING, "Tiled TIFF is not allowed to strip\n");
     }
 
     /* now we have the data and may start decoding */



More information about the ffmpeg-cvslog mailing list