From e44976dca72d15092bf38bceecf7cbaf81e91891 Mon Sep 17 00:00:00 2001
From: Jan de Groot <jgc@archlinux.org>
Date: Mon, 13 Feb 2017 13:28:27 +0000
Subject: Do not process bitmap thumbnails with invalid color settings.

Libraw sets these to 0 in an excption handler, we should not assert fatal when processing such an image.

[bug #778556]
---
 extensions/raw_files/main.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/extensions/raw_files/main.c b/extensions/raw_files/main.c
index 00a4c77..de54c1b 100644
--- extensions/raw_files/main.c
+++ extensions/raw_files/main.c
@@ -292,12 +292,16 @@ _cairo_image_surface_create_from_raw (GInputStream  *istream,
 							error);
 			break;
 		case LIBRAW_THUMBNAIL_BITMAP:
-			image = _libraw_read_bitmap_data (raw_data->thumbnail.twidth,
-							  raw_data->thumbnail.theight,
-							  raw_data->thumbnail.tcolors,
-							  8,
-							  (guchar *) raw_data->thumbnail.thumb,
-							  raw_data->thumbnail.tlength);
+			if ((raw_data->thumbnail.tcolors > 0) && (raw_data->thumbnail.tcolors <= 4)) {
+				image = _libraw_read_bitmap_data (raw_data->thumbnail.twidth,
+								  raw_data->thumbnail.theight,
+								  raw_data->thumbnail.tcolors,
+								  8,
+								  (guchar *) raw_data->thumbnail.thumb,
+								  raw_data->thumbnail.tlength);
+			}
+			else
+				g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA, "Unsupported data format");
 			break;
 		default:
 			g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA, "Unsupported data format");
-- 
cgit v0.12

