diff options
Diffstat (limited to 'gnome-extra/libgda/files')
-rw-r--r-- | gnome-extra/libgda/files/libgda-4.2.8-sandbox-fix.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gnome-extra/libgda/files/libgda-4.2.8-sandbox-fix.patch b/gnome-extra/libgda/files/libgda-4.2.8-sandbox-fix.patch new file mode 100644 index 000000000000..8d24430972d5 --- /dev/null +++ b/gnome-extra/libgda/files/libgda-4.2.8-sandbox-fix.patch @@ -0,0 +1,55 @@ +From 9c1a1809650321c3d752a143f87089d325c49237 Mon Sep 17 00:00:00 2001 +From: Vivien Malerba <malerba@gnome-db.org> +Date: Mon, 06 Jun 2011 18:42:19 +0000 +Subject: Correction for bug #651922 - libgda-4.2.8 wants to write on /etc/libgda-4.0/config during compilation with --enable-gtk-doc + +--- +diff --git a/libgda/gda-config.c b/libgda/gda-config.c +index e1b65c0..e0a51c7 100644 +--- a/libgda/gda-config.c ++++ b/libgda/gda-config.c +@@ -20,6 +20,7 @@ + * Boston, MA 02111-1307, USA. + */ + ++#include <unistd.h> + #include <stdio.h> + #include <gmodule.h> + #include <libgda/gda-config.h> +@@ -630,12 +631,34 @@ gda_config_constructor (GType type, + LIBGDA_ABI_NAME, "config", NULL); + unique_instance->priv->system_config_allowed = FALSE; + if (unique_instance->priv->system_file) { ++#ifdef G_OS_WIN32 ++ + FILE *file; + file = fopen (unique_instance->priv->system_file, "a"); /* Flawfinder: ignore */ + if (file) { + unique_instance->priv->system_config_allowed = TRUE; + fclose (file); + } ++#else ++ struct stat stbuf; ++ if (stat (unique_instance->priv->system_file, &stbuf) == 0) { ++ /* use effective user and group IDs */ ++ uid_t euid; ++ gid_t egid; ++ euid = geteuid (); ++ egid = getegid (); ++ if (euid == stbuf.st_uid) { ++ if ((stbuf.st_mode & S_IWUSR) && (stbuf.st_mode & S_IRUSR)) ++ unique_instance->priv->system_config_allowed = TRUE; ++ } ++ else if (egid == stbuf.st_gid) { ++ if ((stbuf.st_mode & S_IWGRP) && (stbuf.st_mode & S_IRGRP)) ++ unique_instance->priv->system_config_allowed = TRUE; ++ } ++ else if ((stbuf.st_mode & S_IWOTH) && (stbuf.st_mode & S_IROTH)) ++ unique_instance->priv->system_config_allowed = TRUE; ++ } ++#endif + } + + /* Setup file monitoring */ +-- +cgit v0.9 |