From e44976dca72d15092bf38bceecf7cbaf81e91891 Mon Sep 17 00:00:00 2001 From: Jan de Groot 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