Hello community, here is the log from the commit of package dconf for openSUSE:Factory checked in at 2016-08-25 09:51:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dconf (Old) and /work/SRC/openSUSE:Factory/.dconf.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dconf" Changes: -------- --- /work/SRC/openSUSE:Factory/dconf/dconf.changes 2016-08-17 12:01:56.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.dconf.new/dconf.changes 2016-08-25 09:51:35.000000000 +0200 @@ -1,0 +2,9 @@ +Fri Aug 19 18:10:24 UTC 2016 - [email protected] + +- 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). + +------------------------------------------------------------------- New: ---- 0001-gvdb-Restore-permissions-on-changed-files.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dconf.spec ++++++ --- /var/tmp/diff_new_pack.SfACrw/_old 2016-08-25 09:51:36.000000000 +0200 +++ /var/tmp/diff_new_pack.SfACrw/_new 2016-08-25 09:51:36.000000000 +0200 @@ -25,6 +25,8 @@ 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 [email protected] -- 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 @@ %prep %setup -q +%patch0 -p1 %if 0%{?BUILD_FROM_VCS} [ -x ./autogen.sh ] && NOCONFIGURE=1 ./autogen.sh ++++++ 0001-gvdb-Restore-permissions-on-changed-files.patch ++++++ >From 4e303b094dc2b6c53739fb65f0e6e9f508a8f99c Mon Sep 17 00:00:00 2001 From: Marek Kasik <[email protected]> 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 <glib.h> +#include <glib/gstdio.h> #include <fcntl.h> #if !defined(G_OS_WIN32) || !defined(_MSC_VER) #include <unistd.h> @@ -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
