From c5d009d6c4ddf03f4b45acc544b436ca004a41f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hajo=20Nils=20Krabbenho=CC=88ft?=
 <fxtentacle@googlemail.com>
Date: Wed, 16 Sep 2015 22:04:42 +0200
Subject: [PATCH] fix crash for large BW tif images

(cherry picked from commit d38fee759928d631ea2947c67e5ee9eb347693b6)
---
 modules/highgui/src/grfmt_tiff.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/modules/highgui/src/grfmt_tiff.cpp b/modules/highgui/src/grfmt_tiff.cpp
index eeee318c7..067f22de2 100644
--- a/modules/highgui/src/grfmt_tiff.cpp
+++ b/modules/highgui/src/grfmt_tiff.cpp
@@ -221,6 +221,11 @@ bool  TiffDecoder::readData( Mat& img )
                 (!is_tiled && tile_height0 == std::numeric_limits<uint32>::max()) )
                 tile_height0 = m_height;
 
+            if(dst_bpp == 8) {
+                // we will use TIFFReadRGBA* functions, so allocate temporary buffer for 32bit RGBA
+                bpp = 8;
+                ncn = 4;
+            }
             const size_t buffer_size = bpp * ncn * tile_height0 * tile_width0;
             AutoBuffer<uchar> _buffer( buffer_size );
             uchar* buffer = _buffer;