From c187a1fb73d7ab63de82e0305a7a164f55223455b92b8552f4ea0678b0a3fea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Lie?= Date: Mon, 22 Aug 2016 13:05:01 +0000 Subject: [PATCH] Accepting request 420585 from home:zhangxiaofei:branches:GNOME:Factory - Add 0001-gvdb-Restore-permissions-on-changed-files.patch: 'dconf update' writes new contents into temporary file and renames it to the original one, resulting permission inconsistencies if umask has been changed before that. The patch restores the changed permissions (bsc#971074, bgo#758066). OBS-URL: https://build.opensuse.org/request/show/420585 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/dconf?expand=0&rev=91 --- ...Restore-permissions-on-changed-files.patch | 49 +++++++++++++++++++ dconf.changes | 9 ++++ dconf.spec | 3 ++ 3 files changed, 61 insertions(+) create mode 100644 0001-gvdb-Restore-permissions-on-changed-files.patch diff --git a/0001-gvdb-Restore-permissions-on-changed-files.patch b/0001-gvdb-Restore-permissions-on-changed-files.patch new file mode 100644 index 0000000..97ee113 --- /dev/null +++ b/0001-gvdb-Restore-permissions-on-changed-files.patch @@ -0,0 +1,49 @@ +From 4e303b094dc2b6c53739fb65f0e6e9f508a8f99c Mon Sep 17 00:00:00 2001 +From: Marek Kasik +Date: Fri, 13 Nov 2015 17:22:31 +0100 +Subject: [PATCH] gvdb: Restore permissions on changed files + +Restore permissions of files changed in gvdb_table_write_contents(). +Since g_file_set_contents() doesn't preserve permissions it can happen +that if user calling e.g. "dconf update" has umask set then +the originally readable file becomes unreadable. +--- + gvdb/gvdb-builder.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gvdb/gvdb-builder.c b/gvdb/gvdb-builder.c +index 90ea50b..a185cb3 100644 +--- a/gvdb/gvdb-builder.c ++++ b/gvdb/gvdb-builder.c +@@ -21,6 +21,7 @@ + #include "gvdb-format.h" + + #include ++#include + #include + #if !defined(G_OS_WIN32) || !defined(_MSC_VER) + #include +@@ -509,13 +510,20 @@ gvdb_table_write_contents (GHashTable *table, + gboolean status; + FileBuilder *fb; + GString *str; ++ GStatBuf buf; ++ gint stat_ret; + + fb = file_builder_new (byteswap); + file_builder_add_hash (fb, table, &root); + str = file_builder_serialise (fb, root); + ++ stat_ret = g_stat (filename, &buf); ++ + status = g_file_set_contents (filename, str->str, str->len, error); + g_string_free (str, TRUE); + ++ if (stat_ret == 0) ++ g_chmod (filename, buf.st_mode); ++ + return status; + } +-- +2.5.0 + diff --git a/dconf.changes b/dconf.changes index c322e53..0131dc5 100644 --- a/dconf.changes +++ b/dconf.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Fri Aug 19 18:10:24 UTC 2016 - fezhang@suse.com + +- Add 0001-gvdb-Restore-permissions-on-changed-files.patch: + 'dconf update' writes new contents into temporary file and + renames it to the original one, resulting permission + inconsistencies if umask has been changed before that. The patch + restores the changed permissions (bsc#971074, bgo#758066). + ------------------------------------------------------------------- Wed Apr 13 09:51:11 UTC 2016 - fezhang@suse.com diff --git a/dconf.spec b/dconf.spec index cd7af39..c563637 100644 --- a/dconf.spec +++ b/dconf.spec @@ -25,6 +25,8 @@ Group: System/Libraries Url: http://live.gnome.org/dconf Source: http://download.gnome.org/sources/dconf/0.26/%{name}-%{version}.tar.xz Source99: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-gvdb-Restore-permissions-on-changed-files.patch bsc#971074 bgo#758066 fezhang@suse.com -- Restore permissions on files changed by dconf update. +Patch0: 0001-gvdb-Restore-permissions-on-changed-files.patch # For directory ownership BuildRequires: dbus-1 BuildRequires: docbook-xsl-stylesheets @@ -91,6 +93,7 @@ have configuration storage systems. %prep %setup -q +%patch0 -p1 %if 0%{?BUILD_FROM_VCS} [ -x ./autogen.sh ] && NOCONFIGURE=1 ./autogen.sh