Date: Wednesday, December 20, 2017 @ 12:38:43
  Author: heftig
Revision: 313384

1.8.10-2

Added:
  
network-manager-applet/trunk/0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch
Modified:
  network-manager-applet/trunk/PKGBUILD

-----------------------------------------------------------------+
 0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch |   64 
++++++++++
 PKGBUILD                                                        |   13 +-
 2 files changed, 73 insertions(+), 4 deletions(-)

Added: 0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch
===================================================================
--- 0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch             
                (rev 0)
+++ 0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch     
2017-12-20 12:38:43 UTC (rev 313384)
@@ -0,0 +1,64 @@
+From 6c546a4fe86f3066545b7a8bb2900c19a66f9a2f Mon Sep 17 00:00:00 2001
+Message-Id: 
<6c546a4fe86f3066545b7a8bb2900c19a66f9a2f.1513772933.git.jan.steff...@gmail.com>
+From: "Jan Alexander Steffens (heftig)" <[email protected]>
+Date: Wed, 20 Dec 2017 13:23:12 +0100
+Subject: [PATCH] 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.
+---
+ 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 22ab675de8373639..22c31489dd222cd3 100644
+--- a/shared/nm-utils/nm-compat.c
++++ b/shared/nm-utils/nm-compat.c
+@@ -30,39 +30,31 @@ _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, key);
+ }
+ 
+ static const char **
+ _get_keys (NMSettingVpn *setting,
+            gboolean is_secrets,
+            guint *out_length)
+ {
+       guint len;
+       const char **keys = NULL;
+       gs_unref_ptrarray GPtrArray *a = NULL;
+ 
+       nm_assert (NM_IS_SETTING_VPN (setting));
+ 
+       a = g_ptr_array_new ();
+       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) {
+               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.15.1
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2017-12-20 11:23:09 UTC (rev 313383)
+++ PKGBUILD    2017-12-20 12:38:43 UTC (rev 313384)
@@ -11,7 +11,7 @@
 pkgdesc="Applet for managing network connections"
 url="https://wiki.gnome.org/Projects/NetworkManager/";
 pkgver=1.8.10
-pkgrel=1
+pkgrel=2
 arch=(x86_64)
 license=(GPL2 LGPL2.1)
 depends=(libnm-glib libgudev gtk3 mobile-broadband-provider-info iso-codes gcr)
@@ -18,8 +18,10 @@
 makedepends=(libsecret libnotify libmm-glib intltool gobject-introspection git 
gtk-doc meson)
 options=(!emptydirs)
 _commit=79bd00df3c1b7eb69db0f890ddb38516d7b4db5e  # tags/1.8.10^0
-source=("git+https://git.gnome.org/browse/network-manager-applet#commit=$_commit";)
-sha256sums=('SKIP')
+source=("git+https://git.gnome.org/browse/network-manager-applet#commit=$_commit";
+        0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch)
+sha256sums=('SKIP'
+            '117e7fab1a930f64bd8ce4c94de2f954a28315b2763bd4c8e1c583b32bd6feaf')
 
 pkgver() {
   cd $pkgbase
@@ -30,6 +32,9 @@
   mkdir -p build nma/etc/xdg nma/usr/bin \
     nma/usr/share/{applications,icons/hicolor/22x22/apps,man/man1,nm-applet}
   cd $pkgbase
+
+  # https://bugs.archlinux.org/task/56772
+  patch -Np1 -i 
../0001-shared-compat-Fix-memory-handling-of-nm_setting_vpn_.patch
 }
 
 build() {
@@ -61,7 +66,7 @@
   cd usr/share
   mv "$pkgdir"/usr/share/applications/nm-applet.desktop applications/
   mv "$pkgdir"/usr/share/man/man1/nm-applet.1 man/man1/
-  
+
   cd icons/hicolor/22x22
   mv 
"$pkgdir"/usr/share/icons/hicolor/22x22/apps/nm-{adhoc,mb-roam,wwan-tower}.png 
apps/
   mv 
"$pkgdir"/usr/share/icons/hicolor/22x22/apps/nm-{secure,vpn-active}-lock.png 
apps/

Reply via email to