forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gnome-extra/nm-applet: Enable gcr USE by default and fix crashes
- Enable gcr by default (#642730) - Fix VPN crashes with openconnect (#654412) - Fix crashes when editing certs (https://bugzilla.gnome.org/show_bug.cgi?id=785674) Package-Manager: Portage-2.3.31, Repoman-2.3.9
- Loading branch information
Showing
3 changed files
with
247 additions
and
0 deletions.
There are no files selected for viewing
38 changes: 38 additions & 0 deletions
38
gnome-extra/nm-applet/files/nm-applet-1.8.10-cert-chooser.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
From 4d2523b482ab78134dafc02c9b99bd15f1a9174a Mon Sep 17 00:00:00 2001 | ||
From: Ben Wiederhake <[email protected]> | ||
Date: Sun, 14 Jan 2018 23:28:15 +0100 | ||
Subject: [PATCH 1/1] libnma/cert-chooser: handle case of no avalable modules | ||
|
||
Cause: Apparently it's perfectly okay if the list of modules is empty | ||
(e.g., NULL). However, the code assume that this indicates an error, | ||
tries to print the NULL error, and crashes. | ||
|
||
[[email protected]: cosmetic changes] | ||
|
||
https://bugzilla.gnome.org/show_bug.cgi?id=785674 | ||
(cherry picked from commit a37483c1a364ef3cc1cfa29e7ad51ca108d75674) | ||
--- | ||
src/libnma/nma-cert-chooser-button.c | 6 +++--- | ||
1 file changed, 3 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/src/libnma/nma-cert-chooser-button.c b/src/libnma/nma-cert-chooser-button.c | ||
index c7089390..00651765 100644 | ||
--- a/src/libnma/nma-cert-chooser-button.c | ||
+++ b/src/libnma/nma-cert-chooser-button.c | ||
@@ -93,10 +93,10 @@ modules_initialized (GObject *object, GAsyncResult *res, gpointer user_data) | ||
gchar *label; | ||
|
||
modules = gck_modules_initialize_registered_finish (res, &error); | ||
- if (!modules) { | ||
+ if (error) { | ||
/* The Front Fell Off. */ | ||
- g_critical ("Error getting registered modules: %s", error->message); | ||
- g_error_free (error); | ||
+ g_warning ("Error getting registered modules: %s", error->message); | ||
+ g_clear_error (&error); | ||
} | ||
|
||
model = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (self))); | ||
-- | ||
2.14.3 | ||
|
137 changes: 137 additions & 0 deletions
137
gnome-extra/nm-applet/files/nm-applet-1.8.10-vpn-crash.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
From 46f99b295e59f44dfde50ec90e7c09627d32431e Mon Sep 17 00:00:00 2001 | ||
From: "Jan Alexander Steffens (heftig)" <[email protected]> | ||
Date: Wed, 20 Dec 2017 13:23:12 +0100 | ||
Subject: [PATCH 1/2] shared/compat: fix memory handling of | ||
nm_setting_vpn_get_*_keys | ||
|
||
The compat implementations return a (transfer none) strv instead of a | ||
(transfer container) one. This has caused double frees in nm-applet: | ||
https://bugs.archlinux.org/task/56772 | ||
|
||
Don't copy the keys and don't free the container later. | ||
|
||
[[email protected]: patch adjusted to avoid compiler warning] | ||
|
||
Patch imported from NetworkManager commit 8ac8c01162235c2c198bfaf25fb7d1a57a595ce5. | ||
|
||
Fixes: e93ca7fc129ec0f29f5313a3aa12839914df8fa2 | ||
(cherry picked from commit 0c90e08f77b71d2bda699cf032fceec0122bbf82) | ||
--- | ||
shared/nm-utils/nm-compat.c | 10 +--------- | ||
1 file changed, 1 insertion(+), 9 deletions(-) | ||
|
||
diff --git a/shared/nm-utils/nm-compat.c b/shared/nm-utils/nm-compat.c | ||
index 22ab675d..47035e62 100644 | ||
--- a/shared/nm-utils/nm-compat.c | ||
+++ b/shared/nm-utils/nm-compat.c | ||
@@ -30,7 +30,7 @@ _get_keys_cb (const char *key, const char *val, gpointer user_data) | ||
{ | ||
GPtrArray *a = user_data; | ||
|
||
- g_ptr_array_add (a, g_strdup (key)); | ||
+ g_ptr_array_add (a, (gpointer) key); | ||
} | ||
|
||
static const char ** | ||
@@ -55,14 +55,6 @@ _get_keys (NMSettingVpn *setting, | ||
g_ptr_array_sort (a, nm_strcmp_p); | ||
g_ptr_array_add (a, NULL); | ||
keys = (const char **) g_ptr_array_free (g_steal_pointer (&a), FALSE); | ||
- | ||
- /* we need to cache the keys *somewhere*. */ | ||
- g_object_set_qdata_full (G_OBJECT (setting), | ||
- is_secrets | ||
- ? NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_secret_keys") | ||
- : NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_data_keys"), | ||
- keys, | ||
- (GDestroyNotify) g_strfreev); | ||
} | ||
|
||
NM_SET_OUT (out_length, len); | ||
-- | ||
2.14.3 | ||
|
||
|
||
From 0d13a8b4064c83146714ecee86b69042aca35f9e Mon Sep 17 00:00:00 2001 | ||
From: "Jan Alexander Steffens (heftig)" <[email protected]> | ||
Date: Thu, 21 Dec 2017 20:36:48 +0100 | ||
Subject: [PATCH 2/2] shared/compat: fix memory handling of | ||
nm_setting_vpn_get_*_keys() | ||
|
||
The previous fix was bad because the keys do not come from NMSettingVpn's hash | ||
table but are copies that are freed by nm_setting_vpn_foreach_* before | ||
it returns. | ||
|
||
[[email protected]: import shared code from NetworkManager, merging | ||
three patches together.] | ||
|
||
Fixes: e93ca7fc129ec0f29f5313a3aa12839914df8fa2 | ||
Fixes: 0c90e08f77b71d2bda699cf032fceec0122bbf82 | ||
|
||
https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00069.html | ||
https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00070.html | ||
(cherry picked from commit a52ccb2fe170558fc0aab4dd1d15ba8808b10951) | ||
--- | ||
shared/nm-utils/nm-compat.c | 29 ++++++++++++++++++++++------- | ||
1 file changed, 22 insertions(+), 7 deletions(-) | ||
|
||
diff --git a/shared/nm-utils/nm-compat.c b/shared/nm-utils/nm-compat.c | ||
index 47035e62..90328c06 100644 | ||
--- a/shared/nm-utils/nm-compat.c | ||
+++ b/shared/nm-utils/nm-compat.c | ||
@@ -30,7 +30,7 @@ _get_keys_cb (const char *key, const char *val, gpointer user_data) | ||
{ | ||
GPtrArray *a = user_data; | ||
|
||
- g_ptr_array_add (a, (gpointer) key); | ||
+ g_ptr_array_add (a, g_strdup (key)); | ||
} | ||
|
||
static const char ** | ||
@@ -40,22 +40,37 @@ _get_keys (NMSettingVpn *setting, | ||
{ | ||
guint len; | ||
const char **keys = NULL; | ||
- gs_unref_ptrarray GPtrArray *a = NULL; | ||
+ GPtrArray *a; | ||
|
||
nm_assert (NM_IS_SETTING_VPN (setting)); | ||
|
||
- a = g_ptr_array_new (); | ||
+ if (is_secrets) | ||
+ len = nm_setting_vpn_get_num_secrets (setting); | ||
+ else | ||
+ len = nm_setting_vpn_get_num_data_items (setting); | ||
+ | ||
+ a = g_ptr_array_sized_new (len + 1); | ||
+ | ||
if (is_secrets) | ||
nm_setting_vpn_foreach_secret (setting, _get_keys_cb, a); | ||
else | ||
nm_setting_vpn_foreach_data_item (setting, _get_keys_cb, a); | ||
- len = a->len; | ||
|
||
- if (a->len) { | ||
+ len = a->len; | ||
+ if (len) { | ||
g_ptr_array_sort (a, nm_strcmp_p); | ||
g_ptr_array_add (a, NULL); | ||
- keys = (const char **) g_ptr_array_free (g_steal_pointer (&a), FALSE); | ||
- } | ||
+ keys = g_memdup (a->pdata, a->len * sizeof (gpointer)); | ||
+ | ||
+ /* we need to cache the keys *somewhere*. */ | ||
+ g_object_set_qdata_full (G_OBJECT (setting), | ||
+ is_secrets | ||
+ ? NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_secret_keys") | ||
+ : NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_data_keys"), | ||
+ g_ptr_array_free (a, FALSE), | ||
+ (GDestroyNotify) g_strfreev); | ||
+ } else | ||
+ g_ptr_array_free (a, TRUE); | ||
|
||
NM_SET_OUT (out_length, len); | ||
return keys; | ||
-- | ||
2.14.3 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Copyright 1999-2018 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=6 | ||
GNOME2_LA_PUNT="yes" | ||
GNOME_ORG_MODULE="network-manager-applet" | ||
|
||
inherit gnome2 | ||
|
||
DESCRIPTION="GNOME applet for NetworkManager" | ||
HOMEPAGE="https://wiki.gnome.org/Projects/NetworkManager" | ||
|
||
LICENSE="GPL-2+" | ||
SLOT="0" | ||
IUSE="+introspection +gcr +modemmanager selinux teamd" | ||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86" | ||
|
||
RDEPEND=" | ||
>=app-crypt/libsecret-0.18 | ||
>=dev-libs/glib-2.38:2[dbus] | ||
>=dev-libs/dbus-glib-0.88 | ||
>=sys-apps/dbus-1.4.1 | ||
>=sys-auth/polkit-0.96-r1 | ||
>=x11-libs/gtk+-3.10:3[introspection?] | ||
>=x11-libs/libnotify-0.7.0 | ||
app-text/iso-codes | ||
>=net-misc/networkmanager-1.7:=[introspection?,modemmanager?,teamd?] | ||
net-misc/mobile-broadband-provider-info | ||
introspection? ( >=dev-libs/gobject-introspection-0.9.6:= ) | ||
virtual/freedesktop-icon-theme | ||
virtual/libgudev:= | ||
gcr? ( >=app-crypt/gcr-3.14:=[gtk] ) | ||
modemmanager? ( net-misc/modemmanager ) | ||
selinux? ( sys-libs/libselinux ) | ||
teamd? ( >=dev-libs/jansson-2.7 ) | ||
" | ||
DEPEND="${RDEPEND} | ||
>=dev-util/gtk-doc-am-1.0 | ||
>=dev-util/intltool-0.50.1 | ||
virtual/pkgconfig | ||
" | ||
|
||
PDEPEND="virtual/notification-daemon" #546134 | ||
|
||
PATCHES=( | ||
# shared/compat: fix memory handling of nm_setting_vpn_get_*_keys | ||
# (from 'master') | ||
"${FILESDIR}"/${P}-vpn-crash.patch | ||
|
||
# libnma/cert-chooser: handle case of no avalable modules (from | ||
# 'master') | ||
"${FILESDIR}"/${P}-cert-chooser.patch | ||
) | ||
|
||
src_configure() { | ||
local myconf=( | ||
--without-appindicator | ||
--disable-lto | ||
--disable-ld-gc | ||
--disable-more-warnings | ||
--disable-static | ||
--localstatedir=/var | ||
$(use_enable introspection) | ||
$(use_with gcr) | ||
$(use_with modemmanager wwan) | ||
$(use_with selinux) | ||
$(use_with teamd team) | ||
) | ||
gnome2_src_configure "${myconf[@]}" | ||
} |