summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-08-10 13:25:17 -0400
committerMatthias Clasen <mclasen@redhat.com>2022-08-10 13:25:17 -0400
commit59f6c50df8d4d9ceb90f109f6af5a96add3ec928 (patch)
tree9f34080f35c0a8d6f5860926e7cd76269d059922 /gdk
parent86e5ad85b7018c7bc4e692a8c1d679f7c897c96e (diff)
downloadgtk+-59f6c50df8d4d9ceb90f109f6af5a96add3ec928.tar.gz
jpeg loader: Limit memory consumption
This will prevent stupid oom situations with pathological jpeg files, without affecting our ability to load reasonable images.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/loaders/gdkjpeg.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdk/loaders/gdkjpeg.c b/gdk/loaders/gdkjpeg.c
index 8f7e422f0c..a2467cc286 100644
--- a/gdk/loaders/gdkjpeg.c
+++ b/gdk/loaders/gdkjpeg.c
@@ -161,6 +161,8 @@ gdk_load_jpeg (GBytes *input_bytes,
jpeg_create_decompress (&info);
+ info.mem->max_memory_to_use = 100 * 1024 * 1024;
+
jpeg_mem_src (&info,
g_bytes_get_data (input_bytes, NULL),
g_bytes_get_size (input_bytes));
@@ -272,6 +274,7 @@ gdk_save_jpeg (GdkTexture *texture)
info.err = jpeg_std_error (&err);
jpeg_create_compress (&info);
+
info.image_width = width;
info.image_height = height;
info.input_components = 3;
@@ -280,6 +283,8 @@ gdk_save_jpeg (GdkTexture *texture)
jpeg_set_defaults (&info);
jpeg_set_quality (&info, 75, TRUE);
+ info.mem->max_memory_to_use = 100 * 1024 * 1024;
+
jpeg_mem_dest (&info, &data, &size);
memtex = gdk_memory_texture_from_texture (texture,