gnome-desktop3/gnome-desktop-3.25.90-thumbnailer-sandbox-fixes.patch
Bastien Nocera f4801b5efc + gnome-desktop3-3.25.90-1
Update to 3.25.90
2017-08-09 19:24:29 +02:00

156 lines
4.9 KiB
Diff

From b5a674a757d4ad934eb505f4e3c50ee1180f3693 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Tue, 8 Aug 2017 19:12:51 +0200
Subject: [PATCH 1/3] thumbnail: Don't crash if the thumbnailer could not be
setup
script_exec_new() can fail in certain cases, and we should not crash
when trying to expand the script command later if the initial setup
failed.
https://bugzilla.gnome.org/show_bug.cgi?id=785963
---
libgnome-desktop/gnome-desktop-thumbnail-script.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libgnome-desktop/gnome-desktop-thumbnail-script.c b/libgnome-desktop/gnome-desktop-thumbnail-script.c
index 5a5f05f4..d9437d40 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c
@@ -657,6 +657,9 @@ child_setup (gpointer user_data)
static void
script_exec_free (ScriptExec *exec)
{
+ if (exec == NULL)
+ return;
+
g_free (exec->infile);
if (exec->outfile)
{
@@ -757,6 +760,8 @@ gnome_desktop_thumbnail_script_exec (const char *cmd,
ScriptExec *exec;
exec = script_exec_new (uri);
+ if (!exec)
+ goto out;
expanded_script = expand_thumbnailing_cmd (cmd, exec, size, error);
if (expanded_script == NULL)
goto out;
--
2.13.4
From 99df9a83a36882d8a666176d9452283ae065d014 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Tue, 8 Aug 2017 19:14:09 +0200
Subject: [PATCH 2/3] thumbnail: Report errors when script_exec_new() fails
Makes it easier to debug.
https://bugzilla.gnome.org/show_bug.cgi?id=785963
---
libgnome-desktop/gnome-desktop-thumbnail-script.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/libgnome-desktop/gnome-desktop-thumbnail-script.c b/libgnome-desktop/gnome-desktop-thumbnail-script.c
index d9437d40..1012efa8 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c
@@ -687,7 +687,8 @@ clear_fd (gpointer data)
}
static ScriptExec *
-script_exec_new (const char *uri)
+script_exec_new (const char *uri,
+ GError **error)
{
ScriptExec *exec;
g_autoptr(GFile) file = NULL;
@@ -705,7 +706,11 @@ script_exec_new (const char *uri)
exec->infile = g_file_get_path (file);
if (!exec->infile)
- goto bail;
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+ "Could not get path for URI '%s'", uri);
+ goto bail;
+ }
#ifdef HAVE_BWRAP
if (exec->sandbox)
@@ -719,7 +724,11 @@ script_exec_new (const char *uri)
tmpl = g_strdup ("/tmp/gnome-desktop-thumbnailer-XXXXXX");
exec->outdir = g_mkdtemp (tmpl);
if (!exec->outdir)
- goto bail;
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Could not create temporary sandbox directory");
+ goto bail;
+ }
exec->outfile = g_build_filename (exec->outdir, "gnome-desktop-thumbnailer.png", NULL);
ext = get_extension (exec->infile);
@@ -732,7 +741,7 @@ script_exec_new (const char *uri)
int fd;
g_autofree char *tmpname = NULL;
- fd = g_file_open_tmp (".gnome_desktop_thumbnail.XXXXXX", &tmpname, NULL);
+ fd = g_file_open_tmp (".gnome_desktop_thumbnail.XXXXXX", &tmpname, error);
if (fd == -1)
goto bail;
close (fd);
@@ -759,7 +768,7 @@ gnome_desktop_thumbnail_script_exec (const char *cmd,
GBytes *image = NULL;
ScriptExec *exec;
- exec = script_exec_new (uri);
+ exec = script_exec_new (uri, error);
if (!exec)
goto out;
expanded_script = expand_thumbnailing_cmd (cmd, exec, size, error);
--
2.13.4
From f96041679f46ece036d742bde7d78afc67d73519 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Tue, 8 Aug 2017 19:20:31 +0200
Subject: [PATCH 3/3] thumbnail: And print those errors in the debug
https://bugzilla.gnome.org/show_bug.cgi?id=785963
---
libgnome-desktop/gnome-desktop-thumbnail.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
index 73751f69..866fc7d2 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -1066,13 +1066,20 @@ gnome_desktop_thumbnail_factory_generate_thumbnail (GnomeDesktopThumbnailFactory
if (script)
{
GBytes *data;
+ GError *error = NULL;
- data = gnome_desktop_thumbnail_script_exec (script, size, uri, NULL);
+ data = gnome_desktop_thumbnail_script_exec (script, size, uri, &error);
if (data)
{
pixbuf = pixbuf_new_from_bytes (data, NULL);
g_bytes_unref (data);
}
+ else
+ {
+ g_debug ("Thumbnail script ('%s') failed for '%s': %s",
+ script, uri, error ? error->message : "no details");
+ g_clear_error (&error);
+ }
}
g_free (script);
--
2.13.4