Hello community, here is the log from the commit of package cinnamon for openSUSE:Factory checked in at 2018-07-09 13:29:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cinnamon (Old) and /work/SRC/openSUSE:Factory/.cinnamon.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cinnamon" Mon Jul 9 13:29:15 2018 rev:31 rq:621349 version:3.8.7 Changes: -------- --- /work/SRC/openSUSE:Factory/cinnamon/cinnamon.changes 2018-07-03 23:34:13.420419755 +0200 +++ /work/SRC/openSUSE:Factory/.cinnamon.new/cinnamon.changes 2018-07-09 13:30:52.222547503 +0200 @@ -1,0 +2,12 @@ +Thu Jul 5 13:05:25 UTC 2018 - [email protected] + +- Update to version 3.8.7: + * spices: Remove support for installing/removing system-wide + gsettings schemas. + * cinnamon-settings-users.py: Fix symlink attack vulnerability. +- Remove cinnamon-3.8.6-drop-global-gschema.patch, + cinnamon-settings-fix-symlink-vuln.patch: merged upstream. +- Rebase cinnamon-wheel-and-sbin-path.patch. +- Do not require xdg-utils: no longer required. + +------------------------------------------------------------------- Old: ---- Cinnamon-3.8.6.tar.gz cinnamon-3.8.6-drop-global-gschema.patch cinnamon-settings-fix-symlink-vuln.patch New: ---- Cinnamon-3.8.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cinnamon.spec ++++++ --- /var/tmp/diff_new_pack.VYEfoV/_old 2018-07-09 13:30:53.210545510 +0200 +++ /var/tmp/diff_new_pack.VYEfoV/_new 2018-07-09 13:30:53.214545502 +0200 @@ -21,7 +21,7 @@ %define _name Cinnamon %define _version 3.8.0 Name: cinnamon -Version: 3.8.6 +Version: 3.8.7 Release: 0 Summary: GNU/Linux Desktop featuring a traditional layout License: GPL-2.0-or-later AND LGPL-2.1-only @@ -46,12 +46,8 @@ Patch6: %{name}-fix-cogl.patch # PATCH-FEATURE-OPENSUSE cinnamon-fallback-icewm.patch [email protected] -- Use IceWM as fallback. Patch7: %{name}-fallback-icewm.patch -# PATCH-FIX-UPSTREAM cinnamon-settings-fix-symlink-vuln.patch CVE-2018-13054 bsc#1083067 [email protected] -- Fix symlink attack vulnerability (https://github.com/linuxmint/Cinnamon/pull/7683). -Patch8: %{name}-settings-fix-symlink-vuln.patch # PATCH-FIX-OPENSUSE cinnamon-use-libnm.patch [email protected] -- Use libnm, libnma instead of libnm-glib, libnm-gtk. -Patch9: %{name}-use-libnm.patch -# PATCH-FIX-UPSTREAM cinnamon-3.8.6-drop-global-gschema.patch boo#1091701 -- Remove support for installing/removing system-wide gschemas (commit 34043b7). -Patch10: %{name}-3.8.6-drop-global-gschema.patch +Patch8: %{name}-use-libnm.patch BuildRequires: autoconf BuildRequires: autoconf-archive BuildRequires: automake @@ -106,8 +102,6 @@ Requires: python3-python-pam Requires: v4l-tools Requires: wget -# For cinnamon-no-polkit-policy.patch. -Requires: xdg-utils Requires(post): update-alternatives Requires(postun): update-alternatives Recommends: %{name}-lang @@ -185,11 +179,9 @@ %patch5 -p1 %patch6 -p1 %patch7 -p1 -%patch8 -p1 %if 0%{?suse_version} >= 1500 -%patch9 -p1 +%patch8 -p1 %endif -%patch10 -p1 cp -a %{SOURCE1} . %build ++++++ Cinnamon-3.8.6.tar.gz -> Cinnamon-3.8.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/configure.ac new/Cinnamon-3.8.7/configure.ac --- old/Cinnamon-3.8.6/configure.ac 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/configure.ac 2018-07-05 11:46:19.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ(2.63) -AC_INIT([cinnamon],[3.8.6],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon]) +AC_INIT([cinnamon],[3.8.7],[https://github.com/linuxmint/Cinnamon/issues],[cinnamon]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/cinnamon-global.c]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/debian/changelog new/Cinnamon-3.8.7/debian/changelog --- old/Cinnamon-3.8.6/debian/changelog 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/debian/changelog 2018-07-05 11:46:19.000000000 +0200 @@ -1,3 +1,13 @@ +cinnamon (3.8.7) tara; urgency=medium + + [ Michael Webster ] + * spices: Remove support for installing/removing system-wide gsettings schemas. + + [ Matthias Gerstner ] + * cinnamon-settings-users.py: fix symlink attack vulnerability + + -- Clement Lefebvre <[email protected]> Thu, 05 Jul 2018 11:45:59 +0200 + cinnamon (3.8.6) tara; urgency=medium * Revert "network applet: Fix typo with showing access points in certain instances -" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/bin/cinnamon-schema-install new/Cinnamon-3.8.7/files/usr/bin/cinnamon-schema-install --- old/Cinnamon-3.8.6/files/usr/bin/cinnamon-schema-install 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/bin/cinnamon-schema-install 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -#!/usr/bin/python3 - -import os -import sys - -os.system("cp %s /usr/share/glib-2.0/schemas/" % (sys.argv[1])) -os.system("glib-compile-schemas /usr/share/glib-2.0/schemas/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/bin/cinnamon-schema-remove new/Cinnamon-3.8.7/files/usr/bin/cinnamon-schema-remove --- old/Cinnamon-3.8.6/files/usr/bin/cinnamon-schema-remove 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/bin/cinnamon-schema-remove 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -#!/usr/bin/python3 - -import os -import sys - -os.system("rm /usr/share/glib-2.0/schemas/%s" % (sys.argv[1])) -os.system("glib-compile-schemas /usr/share/glib-2.0/schemas/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py new/Cinnamon-3.8.7/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py --- old/Cinnamon-3.8.6/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py 2018-07-05 11:46:19.000000000 +0200 @@ -643,12 +643,6 @@ os.makedirs(locale_dir, mode=0o755, exist_ok=True) subprocess.call(['msgfmt', '-c', os.path.join(po_dir, file), '-o', os.path.join(locale_dir, '%s.mo' % uuid)]) - # Install spice schema file, if any - schema = [filename for filename in contents if 'gschema.xml' in filename] - for filename in schema: - path = os.path.join(folder, filename) - subprocess.call(['pkexec', 'cinnamon-schema-install', path]) - dest = os.path.join(self.install_folder, uuid) if os.path.exists(dest): shutil.rmtree(dest) @@ -663,8 +657,6 @@ file.close() md = json.loads(raw_meta) - if not self.themes and len(schema) > 0: - md['schema-file'] = ','.join(schema) if from_spices and uuid in self.index_cache: md['last-edited'] = self.index_cache[uuid]['last_edited'] else: @@ -690,11 +682,6 @@ try: uuid = job['uuid'] if not self.themes: - # Uninstall spice schema files, if any - if 'schema-file' in self.meta_map[uuid]: - for path in self.meta_map[uuid]['schema-file'].split(','): - subprocess.call(['pkexec', 'cinnamon-schema-remove', path]) - # Uninstall spice localization files, if any if (os.path.exists(locale_inst)): i19_folders = os.listdir(locale_inst) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py new/Cinnamon-3.8.7/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py --- old/Cinnamon-3.8.6/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py 2018-07-05 11:46:19.000000000 +0200 @@ -19,6 +19,35 @@ gettext.install("cinnamon", "/usr/share/locale") +class PrivHelper(object): + """A helper for performing temporary privilege drops. Necessary for + security when accessing user controlled files as root.""" + + def __init__(self): + + self.orig_uid = os.getuid() + self.orig_gid = os.getgid() + self.orig_groups = os.getgroups() + + def drop_privs(self, user): + + uid = user.get_uid() + # the user's main group id + gid = pwd.getpwuid(uid).pw_gid + + # initialize the user's supplemental groups and main group + os.initgroups(user.get_user_name(), gid) + os.setegid(gid) + os.seteuid(uid) + + def restore_privs(self): + + os.seteuid(self.orig_uid) + os.setegid(self.orig_gid) + os.setgroups(self.orig_groups) + +priv_helper = PrivHelper() + (INDEX_USER_OBJECT, INDEX_USER_PICTURE, INDEX_USER_DESCRIPTION) = range(3) (INDEX_GID, INDEX_GROUPNAME) = range(2) @@ -642,7 +671,11 @@ image = PIL.Image.open(path) image.thumbnail((96, 96), Image.ANTIALIAS) face_path = os.path.join(user.get_home_dir(), ".face") - image.save(face_path, "png") + try: + priv_helper.drop_privs(user) + image.save(face_path, "png") + finally: + priv_helper.restore_privs() user.set_icon_file(face_path) self.face_image.set_from_file(face_path) model.set_value(treeiter, INDEX_USER_PICTURE, GdkPixbuf.Pixbuf.new_from_file_at_size(face_path, 48, 48)) @@ -675,7 +708,11 @@ user = model[treeiter][INDEX_USER_OBJECT] user.set_icon_file(path) self.face_image.set_from_file(path) - shutil.copy(path, os.path.join(user.get_home_dir(), ".face")) + try: + priv_helper.drop_privs(user) + shutil.copy(path, os.path.join(user.get_home_dir(), ".face")) + finally: + priv_helper.restore_privs() model.set_value(treeiter, INDEX_USER_PICTURE, GdkPixbuf.Pixbuf.new_from_file_at_size(path, 48, 48)) model.row_changed(model.get_path(treeiter), treeiter) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/share/polkit-1/actions/org.cinnamon.schema-install.policy new/Cinnamon-3.8.7/files/usr/share/polkit-1/actions/org.cinnamon.schema-install.policy --- old/Cinnamon-3.8.6/files/usr/share/polkit-1/actions/org.cinnamon.schema-install.policy 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/share/polkit-1/actions/org.cinnamon.schema-install.policy 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE policyconfig PUBLIC - "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" - "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> -<policyconfig> - - <vendor>Cinnamon</vendor> - <vendor_url>https://github.com/linuxmint/cinnamon</vendor_url> - - <action id="org.cinnamon.schema-install"> - <icon_name>system-run</icon_name> - <defaults> - <allow_any>no</allow_any> - <allow_inactive>no</allow_inactive> - <allow_active>auth_admin_keep</allow_active> - </defaults> - <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/cinnamon-schema-install</annotate> - </action> - -</policyconfig> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Cinnamon-3.8.6/files/usr/share/polkit-1/actions/org.cinnamon.schema-remove.policy new/Cinnamon-3.8.7/files/usr/share/polkit-1/actions/org.cinnamon.schema-remove.policy --- old/Cinnamon-3.8.6/files/usr/share/polkit-1/actions/org.cinnamon.schema-remove.policy 2018-06-24 17:20:18.000000000 +0200 +++ new/Cinnamon-3.8.7/files/usr/share/polkit-1/actions/org.cinnamon.schema-remove.policy 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE policyconfig PUBLIC - "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" - "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> -<policyconfig> - - <vendor>Cinnamon</vendor> - <vendor_url>https://github.com/linuxmint/cinnamon</vendor_url> - - <action id="org.cinnamon.schema-remove"> - <icon_name>system-run</icon_name> - <defaults> - <allow_any>no</allow_any> - <allow_inactive>no</allow_inactive> - <allow_active>auth_admin_keep</allow_active> - </defaults> - <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/cinnamon-schema-remove</annotate> - </action> - -</policyconfig> ++++++ cinnamon-wheel-and-sbin-path.patch ++++++ --- /var/tmp/diff_new_pack.VYEfoV/_old 2018-07-09 13:30:53.554544816 +0200 +++ /var/tmp/diff_new_pack.VYEfoV/_new 2018-07-09 13:30:53.558544808 +0200 @@ -17,7 +17,7 @@ --- a/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py +++ b/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py -@@ -153,12 +153,11 @@ class EditableEntry (Gtk.Notebook): +@@ -182,12 +182,11 @@ class EditableEntry (Gtk.Notebook): class PasswordDialog(Gtk.Dialog): @@ -31,7 +31,7 @@ self.set_modal(True) self.set_skip_taskbar_hint(True) -@@ -224,14 +223,7 @@ class PasswordDialog(Gtk.Dialog): +@@ -253,14 +252,7 @@ class PasswordDialog(Gtk.Dialog): def change_password(self): newpass = self.new_password.get_text() self.user.set_password(newpass, "") @@ -47,7 +47,7 @@ self.destroy() def set_passwords_visibility(self): -@@ -570,7 +562,7 @@ class Module: +@@ -599,7 +591,7 @@ class Module: model, treeiter = self.users_treeview.get_selection().get_selected() if treeiter != None: user = model[treeiter][INDEX_USER_OBJECT] @@ -56,7 +56,7 @@ response = dialog.run() def _on_groups_button_clicked(self, widget): -@@ -581,7 +573,7 @@ class Module: +@@ -610,7 +602,7 @@ class Module: response = dialog.run() if response == Gtk.ResponseType.OK: groups = dialog.get_selected_groups() @@ -65,7 +65,7 @@ groups.sort() self.groups_label.set_text(", ".join(groups)) dialog.destroy() -@@ -839,11 +831,11 @@ class Module: +@@ -876,11 +868,11 @@ class Module: pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48) description = "<b>%s</b>\n%s" % (fullname, username) piter = self.users.append(None, [new_user, pixbuf, description]) @@ -80,7 +80,7 @@ self.load_groups() dialog.destroy() -@@ -888,7 +880,7 @@ class Module: +@@ -925,7 +917,7 @@ class Module: d.set_default_response(Gtk.ResponseType.NO) r = d.run() if r == Gtk.ResponseType.YES: @@ -89,7 +89,7 @@ self.load_groups() d.destroy() -@@ -896,7 +888,7 @@ class Module: +@@ -933,7 +925,7 @@ class Module: dialog = GroupDialog(_("Group Name"), "", self.window) response = dialog.run() if response == Gtk.ResponseType.OK: @@ -98,7 +98,7 @@ self.load_groups() dialog.destroy() -@@ -907,7 +899,7 @@ class Module: +@@ -944,7 +936,7 @@ class Module: dialog = GroupDialog(_("Group Name"), group, self.window) response = dialog.run() if response == Gtk.ResponseType.OK:
