summaryrefslogtreecommitdiffstats
path: root/source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch')
-rw-r--r--source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch b/source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch
new file mode 100644
index 000000000..0a45dcf1b
--- /dev/null
+++ b/source/a/upower/patches/0002-linux-Fix-memory-leak-in-Bluez-backend.patch
@@ -0,0 +1,51 @@
+From 8e6cb06ff68a283b9857d4d0e831d93c42521534 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Thu, 17 Oct 2019 16:36:58 +0200
+Subject: [PATCH 2/7] linux: Fix memory leak in Bluez backend
+
+g_dbus_proxy_get_cached_property() returns transfer full GVariants.
+---
+ src/linux/up-device-bluez.c | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/src/linux/up-device-bluez.c b/src/linux/up-device-bluez.c
+index cd89529..5e595a9 100644
+--- a/src/linux/up-device-bluez.c
++++ b/src/linux/up-device-bluez.c
+@@ -71,9 +71,10 @@ up_device_bluez_coldplug (UpDevice *device)
+ GDBusProxy *proxy;
+ GError *error = NULL;
+ UpDeviceKind kind;
++ guint16 appearance;
+ const char *uuid;
+ const char *model;
+- guint16 appearance;
++ GVariant *v;
+ guchar percentage;
+
+ /* Static device properties */
+@@ -93,10 +94,18 @@ up_device_bluez_coldplug (UpDevice *device)
+ return FALSE;
+ }
+
+- appearance = g_variant_get_uint16 (g_dbus_proxy_get_cached_property (proxy, "Appearance"));
++ v = g_dbus_proxy_get_cached_property (proxy, "Appearance");
++ appearance = g_variant_get_uint16 (v);
+ kind = appearance_to_kind (appearance);
+- uuid = g_variant_get_string (g_dbus_proxy_get_cached_property (proxy, "Address"), NULL);
+- model = g_variant_get_string (g_dbus_proxy_get_cached_property (proxy, "Alias"), NULL);
++ g_variant_unref (v);
++
++ v = g_dbus_proxy_get_cached_property (proxy, "Address");
++ uuid = g_variant_get_string (v, NULL);
++ g_variant_unref (v);
++
++ v = g_dbus_proxy_get_cached_property (proxy, "Alias");
++ model = g_variant_get_string (v, NULL);
++ g_variant_unref (v);
+
+ /* hardcode some values */
+ g_object_set (device,
+--
+2.24.1
+