Hello community, here is the log from the commit of package cinnamon for openSUSE:Factory checked in at 2018-07-03 23:34:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cinnamon (Old) and /work/SRC/openSUSE:Factory/.cinnamon.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cinnamon" Tue Jul 3 23:34:11 2018 rev:30 rq:620274 version:3.8.6 Changes: -------- --- /work/SRC/openSUSE:Factory/cinnamon/cinnamon.changes 2018-06-25 11:42:56.540283078 +0200 +++ /work/SRC/openSUSE:Factory/.cinnamon.new/cinnamon.changes 2018-07-03 23:34:13.420419755 +0200 @@ -1,0 +2,11 @@ +Mon Jul 2 13:55:49 UTC 2018 - [email protected] + +- Add cinnamon-settings-fix-symlink-vuln.patch by Matthias Gerstner + to fix a symlink attack vulnerability (VE-2018-13054, + bsc#1083067, https://github.com/linuxmint/Cinnamon/pull/7683). +- Replace cinnamon-no-polkit-policy.patch with + cinnamon-3.8.6-drop-global-gschema.patch: Remove support for + installing/removing system-wide gschemas (commit 34043b7). +- Slightly improve cinnamon-use-libnm.patch. + +------------------------------------------------------------------- Old: ---- cinnamon-no-polkit-policy.patch New: ---- cinnamon-3.8.6-drop-global-gschema.patch cinnamon-settings-fix-symlink-vuln.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cinnamon.spec ++++++ --- /var/tmp/diff_new_pack.Bbp9Qx/_old 2018-07-03 23:34:14.244418574 +0200 +++ /var/tmp/diff_new_pack.Bbp9Qx/_new 2018-07-03 23:34:14.244418574 +0200 @@ -46,10 +46,12 @@ 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. -Patch8: %{name}-use-libnm.patch -# PATCH-FIX-OPENSUSE cinnamon-no-polkit-policy.patch boo#1091701 -- Use xdg-su instead of a polkit policy due to bsc#1090963 being unresolved. -Patch9: %{name}-no-polkit-policy.patch +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 BuildRequires: autoconf BuildRequires: autoconf-archive BuildRequires: automake @@ -73,7 +75,6 @@ BuildRequires: pkgconfig(libcinnamon-menu-3.0) BuildRequires: pkgconfig(libcroco-0.6) BuildRequires: pkgconfig(libmuffin) >= %{_version} -BuildRequires: pkgconfig(libnm) BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(polkit-agent-1) @@ -85,8 +86,6 @@ Requires: cinnamon-settings-daemon >= %{_version} Requires: cjs >= %{_version} Requires: cups-pk-helper -Requires: dbus-1-python -Requires: dbus-1-python3 Requires: gettext-runtime Requires: glib2-tools Requires: iso-country-flags-png @@ -130,9 +129,13 @@ Provides: typelib-1_0-Cinnamon-0_1 = %{version} Obsoletes: typelib-1_0-Cinnamon-0_1 < %{version} %if 0%{?suse_version} >= 1500 +BuildRequires: pkgconfig(libnm) Requires: NetworkManager-applet +Requires: python3-dbus-python %else +BuildRequires: pkgconfig(libnm-glib) Requires: NetworkManager-gnome +Requires: dbus-1-python3 %endif %description @@ -182,10 +185,11 @@ %patch5 -p1 %patch6 -p1 %patch7 -p1 -%if 0%{?suse_version} >= 1500 %patch8 -p1 -%endif +%if 0%{?suse_version} >= 1500 %patch9 -p1 +%endif +%patch10 -p1 cp -a %{SOURCE1} . %build ++++++ cinnamon-3.8.6-drop-global-gschema.patch ++++++ --- a/files/usr/bin/cinnamon-schema-install +++ /dev/null @@ -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/") --- a/files/usr/bin/cinnamon-schema-remove +++ /dev/null @@ -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/") --- a/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py +++ b/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py @@ -643,12 +643,6 @@ def install_from_folder(self, folder, uuid, from_spices=False): 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 @@ def install_from_folder(self, folder, uuid, from_spices=False): 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 @@ def _uninstall(self, job): 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) --- a/files/usr/share/polkit-1/actions/org.cinnamon.schema-install.policy +++ /dev/null @@ -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> --- a/files/usr/share/polkit-1/actions/org.cinnamon.schema-remove.policy +++ /dev/null @@ -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-settings-fix-symlink-vuln.patch ++++++ --- a/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py +++ b/files/usr/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py @@ -19,6 +19,35 @@ from gi.repository import Gtk, GObject, 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) @@ -634,7 +663,11 @@ class Module: 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)) @@ -667,7 +700,11 @@ class Module: 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) ++++++ cinnamon-use-libnm.patch ++++++ --- /var/tmp/diff_new_pack.Bbp9Qx/_old 2018-07-03 23:34:14.320418465 +0200 +++ /var/tmp/diff_new_pack.Bbp9Qx/_new 2018-07-03 23:34:14.320418465 +0200 @@ -1,11 +1,19 @@ --- a/configure.ac +++ b/configure.ac -@@ -77,7 +77,7 @@ PKG_CHECK_MODULES(CINNAMON, gio-2.0 >= $ +@@ -64,6 +64,7 @@ GTK_MIN_VERSION=3.12.0 + GIO_MIN_VERSION=2.35.0 + POLKIT_MIN_VERSION=0.100 + STARTUP_NOTIFICATION_MIN_VERSION=0.11 ++NM_MIN_VERSION=1.6 + + # Collect more than 20 libraries for a prize! + PKG_CHECK_MODULES(CINNAMON, gio-2.0 >= $GIO_MIN_VERSION +@@ -77,7 +78,7 @@ PKG_CHECK_MODULES(CINNAMON, gio-2.0 >= $ libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes - libnm-glib libnm-util atk-bridge-2.0) -+ libnm atk-bridge-2.0) ++ libnm >= $NM_MIN_VERSION atk-bridge-2.0) PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0) @@ -21,7 +29,7 @@ const Signals = imports.signals; const St = imports.gi.St; const Mainloop = imports.mainloop; -@@ -35,9 +34,9 @@ const NMAccessPointSecurity = { +@@ -35,26 +34,14 @@ const NMAccessPointSecurity = { }; // small optimization, to avoid using [] all the time @@ -34,7 +42,24 @@ // number of wireless networks that should be visible // (the remaining are placed into More...) -@@ -76,7 +75,7 @@ function sortAccessPoints(accessPoints) + const NUM_VISIBLE_NETWORKS = 5; + +-function ssidCompare(one, two) { +- if (!one || !two) +- return false; +- if (one.length != two.length) +- return false; +- for (let i = 0; i < one.length; i++) { +- if (one[i] != two[i]) +- return false; +- } +- return true; +-} +- + // shared between NMNetworkMenuItem and NMDeviceWWAN + function signalToIcon(value) { + if (value > 80) +@@ -76,7 +63,7 @@ function sortAccessPoints(accessPoints) } function ssidToLabel(ssid) { @@ -43,7 +68,7 @@ if (!label) label = _("<unknown>"); return label; -@@ -87,8 +86,8 @@ function NMNetworkMenuItem() { +@@ -87,8 +74,8 @@ function NMNetworkMenuItem() { } function default_to_private_connections(client) { @@ -54,7 +79,7 @@ } NMNetworkMenuItem.prototype = { -@@ -101,7 +100,7 @@ NMNetworkMenuItem.prototype = { +@@ -101,7 +88,7 @@ NMNetworkMenuItem.prototype = { this.bestAP = accessPoints[0]; if (!title) { @@ -63,7 +88,16 @@ title = ssidToLabel(ssid); } -@@ -391,7 +390,7 @@ NMDevice.prototype = { +@@ -221,7 +208,7 @@ NMWiredSectionTitleMenuItem.prototype = + + // Immediately reset the switch to false, it will be updated appropriately + // by state-changed signals in devices (but fixes the VPN not being in sync +- // if the ActiveConnection object is never seen by libnm-glib) ++ // if the ActiveConnection object is never seen by libnm) + this._switch.setToggleState(false); + + if (newState) +@@ -391,7 +378,7 @@ NMDevice.prototype = { }, deactivate: function() { @@ -72,7 +106,7 @@ }, activate: function() { -@@ -402,16 +401,17 @@ NMDevice.prototype = { +@@ -402,16 +389,17 @@ NMDevice.prototype = { // pick the most recently used connection and connect to that // or if no connections ever set, create an automatic one if (this._connections.length > 0) { @@ -94,7 +128,7 @@ }, setActiveConnection: function(activeConnection) { -@@ -498,25 +498,25 @@ NMDevice.prototype = { +@@ -498,25 +486,25 @@ NMDevice.prototype = { get statusLabel(){ switch(this.device.state) { @@ -131,7 +165,7 @@ // This state is actually a compound of various states (generically unavailable, // firmware missing, carrier not available), that are exposed by different properties // (whose state may or may not updated when we receive state-changed). -@@ -527,7 +527,7 @@ NMDevice.prototype = { +@@ -527,7 +515,7 @@ NMDevice.prototype = { module, which is missing */ return _("firmware missing"); } @@ -140,7 +174,7 @@ if (!this._carrierChangedId) this._carrierChangedId = this.device.connect('notify::carrier', Lang.bind(this, this._substateChanged)); if (!this.carrier) { -@@ -538,7 +538,7 @@ NMDevice.prototype = { +@@ -538,7 +526,7 @@ NMDevice.prototype = { /* Translators: this is for a network device that cannot be activated (for example it is disabled by rfkill, or it has no coverage */ return _("unavailable"); @@ -149,7 +183,7 @@ return _("connection failed"); default: log('Device state invalid, is %d'.format(this.device.state)); -@@ -548,7 +548,7 @@ NMDevice.prototype = { +@@ -548,7 +536,7 @@ NMDevice.prototype = { get controllable(){ // controllable for every state except unavailable or unmanaged @@ -158,7 +192,7 @@ return false; return true; -@@ -580,7 +580,7 @@ NMDevice.prototype = { +@@ -580,7 +568,7 @@ NMDevice.prototype = { }, _shouldShowConnectionList: function() { @@ -167,7 +201,7 @@ }, _createSection: function() { -@@ -615,7 +615,7 @@ NMDevice.prototype = { +@@ -615,7 +603,7 @@ NMDevice.prototype = { this._autoConnectionItem.connect('activate', Lang.bind(this, function() { let connection = this._createAutomaticConnection(); if (connection) @@ -176,7 +210,7 @@ })); this.section.addMenuItem(this._autoConnectionItem); } -@@ -626,7 +626,7 @@ NMDevice.prototype = { +@@ -626,7 +614,7 @@ NMDevice.prototype = { let item = new PopupMenu.PopupMenuItem(obj.name); item.connect('activate', Lang.bind(this, function() { @@ -185,7 +219,7 @@ })); return item; }, -@@ -651,11 +651,11 @@ NMDevice.prototype = { +@@ -651,11 +639,11 @@ NMDevice.prototype = { return; } @@ -199,7 +233,7 @@ this.emit('activation-failed', reason); } -@@ -699,10 +699,10 @@ NMDevice.prototype = { +@@ -699,10 +687,10 @@ NMDevice.prototype = { } else { switch (this.device.get_device_type()) { @@ -214,7 +248,7 @@ default: return ""; } } -@@ -753,13 +753,13 @@ NMDeviceWired.prototype = { +@@ -753,13 +741,13 @@ NMDeviceWired.prototype = { }, _createAutomaticConnection: function() { @@ -233,7 +267,7 @@ autoconnect: true })); return connection; -@@ -786,26 +786,26 @@ NMDeviceModem.prototype = { +@@ -786,26 +774,26 @@ NMDeviceModem.prototype = { try { is_wwan = true; this.mobileDevice = new ModemManager.BroadbandModem(device.udi, device.current_capabilities); @@ -271,7 +305,7 @@ is_wwan = true; // FIXME: support signal quality } -@@ -853,7 +853,7 @@ NMDeviceModem.prototype = { +@@ -853,7 +841,7 @@ NMDeviceModem.prototype = { }, get connected() { @@ -280,7 +314,7 @@ }, destroy: function() { -@@ -922,13 +922,13 @@ NMDeviceBluetooth.prototype = { +@@ -922,13 +910,13 @@ NMDeviceBluetooth.prototype = { }, _createAutomaticConnection: function() { @@ -299,7 +333,7 @@ autoconnect: false }); setting_conn.add_permission('user', GLib.get_user_name(), null); -@@ -970,7 +970,7 @@ NMDeviceVPN.prototype = { +@@ -970,7 +958,7 @@ NMDeviceVPN.prototype = { }, connectionValid: function(connection) { @@ -308,7 +342,7 @@ }, get empty() { -@@ -993,7 +993,7 @@ NMDeviceVPN.prototype = { +@@ -993,7 +981,7 @@ NMDeviceVPN.prototype = { deactivate: function() { if (this._activeConnection) @@ -317,7 +351,7 @@ }, statusLabel: null, -@@ -1042,7 +1042,7 @@ NMDeviceWireless.prototype = { +@@ -1042,7 +1030,7 @@ NMDeviceWireless.prototype = { obj = this._networks[pos]; obj.accessPoints.push(ap); } else { @@ -326,7 +360,7 @@ mode: ap.mode, security: this._getApSecurityType(ap), connections: [ ], -@@ -1137,7 +1137,7 @@ NMDeviceWireless.prototype = { +@@ -1137,7 +1125,7 @@ NMDeviceWireless.prototype = { for (let i = 0; i < bestApObj.accessPoints.length; i++) { let ap = bestApObj.accessPoints[i]; if (ap.connection_valid(best)) { @@ -335,7 +369,7 @@ break; } } -@@ -1151,7 +1151,7 @@ NMDeviceWireless.prototype = { +@@ -1151,7 +1139,7 @@ NMDeviceWireless.prototype = { if (this._networks.length > 0) { let connection = this._createAutomaticConnection(this._networks[0]); let accessPoints = sortAccessPoints(this._networks[0].accessPoints); @@ -344,16 +378,16 @@ } }, -@@ -1238,7 +1238,7 @@ NMDeviceWireless.prototype = { +@@ -1238,7 +1226,7 @@ NMDeviceWireless.prototype = { }, _networkCompare: function(network, accessPoint) { - if (!ssidCompare(network.ssid, accessPoint.get_ssid())) -+ if (!ssidCompare(network.ssid, accessPoint.get_ssid().get_data())) ++ if (!network.ssid.equal(accessPoint.get_ssid())) return false; if (network.mode != accessPoint.mode) return false; -@@ -1294,7 +1294,7 @@ NMDeviceWireless.prototype = { +@@ -1294,7 +1282,7 @@ NMDeviceWireless.prototype = { if (apObj.item) apObj.item.updateAccessPoints(apObj.accessPoints); } else { @@ -362,7 +396,7 @@ mode: accessPoint.mode, security: this._getApSecurityType(accessPoint), connections: [ ], -@@ -1405,7 +1405,7 @@ NMDeviceWireless.prototype = { +@@ -1405,7 +1393,7 @@ NMDeviceWireless.prototype = { let accessPoints = sortAccessPoints(accessPointObj.accessPoints); for (let i = 0; i < accessPoints.length; i++) { if (accessPoints[i].connection_valid(connection)) { @@ -371,12 +405,12 @@ break; } } -@@ -1545,32 +1545,32 @@ NMDeviceWireless.prototype = { +@@ -1545,32 +1533,32 @@ NMDeviceWireless.prototype = { _createAutomaticConnection: function(apObj) { let name; - let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid); -+ let ssid = NM.utils_ssid_to_utf8(apObj.ssid); ++ let ssid = NM.utils_ssid_to_utf8(apObj.ssid.get_data()); if (ssid) { /* TRANSLATORS: this the automatic wireless connection name (including the network name) */ name = _("Auto %s").format(ssid); @@ -414,7 +448,7 @@ })); } } -@@ -1602,10 +1602,10 @@ NMDeviceWireless.prototype = { +@@ -1602,10 +1590,10 @@ NMDeviceWireless.prototype = { // 802.1x-enabled APs require further configuration, so they're // handled in cinnamon-settings Util.spawn(['cinnamon-settings', 'network', 'connect-8021x-wifi', @@ -427,16 +461,25 @@ } })); } -@@ -1708,7 +1708,7 @@ CinnamonNetworkApplet.prototype = { +@@ -1708,7 +1696,16 @@ CinnamonNetworkApplet.prototype = { this._currentIconName = undefined; this._setIcon('network-offline'); - this._client = NMClient.Client.new(); -+ this._client = NM.Client.new(null); ++ NM.Client.new_async(null, Lang.bind(this, this._clientGot)); ++ } ++ catch (e) { ++ global.logError(e); ++ } ++ }, ++ ++ _clientGot: function(obj, result) { ++ try { ++ this._client = NM.Client.new_finish(result); this._statusSection = new PopupMenu.PopupMenuSection(); this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false }); -@@ -1773,8 +1773,8 @@ CinnamonNetworkApplet.prototype = { +@@ -1773,8 +1770,8 @@ CinnamonNetworkApplet.prototype = { this.rescan_item.connect("activate", Lang.bind(this, function() { let devices = this._devices.wireless.devices; @@ -447,7 +490,7 @@ } })); -@@ -1797,42 +1797,35 @@ CinnamonNetworkApplet.prototype = { +@@ -1797,42 +1794,35 @@ CinnamonNetworkApplet.prototype = { // Device types this._dtypes = { }; @@ -515,7 +558,7 @@ this._periodicUpdateIcon(); -@@ -1914,8 +1907,8 @@ CinnamonNetworkApplet.prototype = { +@@ -1914,8 +1904,8 @@ CinnamonNetworkApplet.prototype = { _readDevices: function() { let devices = this._client.get_devices() || [ ]; @@ -526,7 +569,16 @@ } }, -@@ -2034,7 +2027,7 @@ CinnamonNetworkApplet.prototype = { +@@ -1975,7 +1965,7 @@ CinnamonNetworkApplet.prototype = { + + this._syncSectionTitle(wrapper.category); + } else +- log('Invalid network device type, is ' + device.get_device_type()); ++ log('Unknown network device type, is ' + device.get_device_type()); + }, + + _deviceRemoved: function(client, device) { +@@ -2034,7 +2024,7 @@ CinnamonNetworkApplet.prototype = { } if (!a._connection) { @@ -535,7 +587,7 @@ if (a._connection) { a._type = a._connection._type; -@@ -2060,7 +2053,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2060,7 +2050,7 @@ CinnamonNetworkApplet.prototype = { continue; } @@ -544,7 +596,7 @@ if (!default_ip4) { // We didn't find the default IPV4 device yet.. if (!default_ip6) { -@@ -2075,7 +2068,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2075,7 +2065,7 @@ CinnamonNetworkApplet.prototype = { } } } @@ -553,7 +605,7 @@ activating = a; } -@@ -2087,7 +2080,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2087,7 +2077,7 @@ CinnamonNetworkApplet.prototype = { } if (!a._primaryDevice) { @@ -562,7 +614,7 @@ // find a good device to be considered primary a._primaryDevice = null; let devices = a.get_devices() || [ ]; -@@ -2104,7 +2097,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2104,7 +2094,7 @@ CinnamonNetworkApplet.prototype = { if (a._primaryDevice) a._primaryDevice.setActiveConnection(a); @@ -571,7 +623,7 @@ a._primaryDevice && a._primaryDevice._notification) { a._primaryDevice._notification.destroy(); a._primaryDevice._notification = null; -@@ -2116,7 +2109,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2116,7 +2106,7 @@ CinnamonNetworkApplet.prototype = { }, _notifyActivated: function(activeConnection) { @@ -580,7 +632,7 @@ activeConnection._primaryDevice && activeConnection._primaryDevice._notification) { activeConnection._primaryDevice._notification.destroy(); activeConnection._primaryDevice._notification = null; -@@ -2126,37 +2119,33 @@ CinnamonNetworkApplet.prototype = { +@@ -2126,37 +2116,33 @@ CinnamonNetworkApplet.prototype = { }, _readConnections: function() { @@ -626,7 +678,7 @@ let pos = this._connections.indexOf(connection); if (pos != -1) this._connections.splice(pos); -@@ -2169,35 +2158,35 @@ CinnamonNetworkApplet.prototype = { +@@ -2169,35 +2155,35 @@ CinnamonNetworkApplet.prototype = { this._devices.vpn.section.actor.hide(); } else if (section != NMConnectionCategory.INVALID) { let devices = this._devices[section].devices; @@ -676,7 +728,7 @@ } } }, -@@ -2225,7 +2214,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2225,7 +2211,7 @@ CinnamonNetworkApplet.prototype = { }, _syncNMState: function() { @@ -685,7 +737,7 @@ log('NetworkManager is not running, hiding...'); this.menu.close(); this.actor.hide(); -@@ -2255,7 +2244,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2255,7 +2241,7 @@ CinnamonNetworkApplet.prototype = { if (!mc) { this._setIcon('network-offline'); this.set_applet_tooltip(_("No connection")); @@ -694,7 +746,7 @@ new_delay = FAST_PERIODIC_UPDATE_FREQUENCY_SECONDS; switch (mc._section) { case NMConnectionCategory.WWAN: -@@ -2297,7 +2286,7 @@ CinnamonNetworkApplet.prototype = { +@@ -2297,7 +2283,7 @@ CinnamonNetworkApplet.prototype = { this.set_applet_tooltip(_("Connected to the wireless network")); } else { this._setIcon('network-wireless-signal-' + signalToIcon(ap.strength)); @@ -725,7 +777,7 @@ log(e.message); --- a/src/Makefile.am +++ b/src/Makefile.am -@@ -222,7 +222,7 @@ libcinnamon_la_LIBADD = \ +@@ -223,7 +223,7 @@ libcinnamon_la_LIBADD = \ libcinnamon_la_CPPFLAGS = $(cinnamon_cflags) Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir
