summaryrefslogtreecommitdiff
path: root/nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch')
-rw-r--r--nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch b/nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch
new file mode 100644
index 000000000..e7989509e
--- /dev/null
+++ b/nonprism/gthumb/0001-Do-not-process-bitmap-thumbnails-with-invalid-color-.patch
@@ -0,0 +1,40 @@
+From 2019d1ed9d3cc6085598b92c2001690fb41af8f7 Mon Sep 17 00:00:00 2001
+From: Jan de Groot <jgc@archlinux.org>
+Date: Mon, 13 Feb 2017 13:28:27 +0000
+Subject: [PATCH] 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.
+---
+ 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 6cf2ff8e..726385a3 100644
+--- a/extensions/raw_files/main.c
++++ b/extensions/raw_files/main.c
+@@ -267,12 +267,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");
+--
+2.11.1
+