From 91613543d595f8d345a8725746b6f77a821173a8 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 8 Feb 2017 18:27:54 +0100 Subject: [PATCH] libmm-glib: set clear func by default in the MMModemPortInfo array So that we don't leak the port names allocated within each MMModemPortInfo. ==261== 672 bytes in 84 blocks are definitely lost in loss record 7,314 of 7,383 ==261== at 0x402C51E: malloc (vg_replace_malloc.c:299) ==261== by 0x4484878: g_malloc (gmem.c:94) ==261== by 0x449D51D: g_strdup (gstrfuncs.c:363) ==261== by 0x44B5B73: g_variant_dup_string (gvariant.c:1529) ==261== by 0x44B945E: g_variant_valist_get_nnp (gvariant.c:4775) ==261== by 0x44B945E: g_variant_valist_get_leaf (gvariant.c:4945) ==261== by 0x44B945E: g_variant_valist_get (gvariant.c:5126) ==261== by 0x44B922C: g_variant_valist_get (gvariant.c:5161) ==261== by 0x44B9FC9: g_variant_get_va (gvariant.c:5388) ==261== by 0x44BA3C5: g_variant_get_child (gvariant.c:5486) ==261== by 0x6613FA8: mm_common_ports_variant_to_garray (mm-common-helpers.c:238) ==261== by 0x6601AB9: ensure_internal_ports (mm-modem.c:766) ==261== by 0x6603E42: mm_modem_peek_ports (mm-modem.c:825) ==261== by 0x65CD94D: owns_port (nm-modem-broadband.c:196) Reported-by: Piotr Figiel --- libmm-glib/mm-common-helpers.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c index 7bd845b9..f99e58d8 100644 --- a/libmm-glib/mm-common-helpers.c +++ b/libmm-glib/mm-common-helpers.c @@ -219,6 +219,12 @@ mm_common_sms_storages_garray_to_variant (GArray *array) return mm_common_sms_storages_array_to_variant (NULL, 0); } +static void +clear_modem_port_info (MMModemPortInfo *info) +{ + g_free (info->name); +} + GArray * mm_common_ports_variant_to_garray (GVariant *variant) { @@ -232,6 +238,7 @@ mm_common_ports_variant_to_garray (GVariant *variant) if (n > 0) { array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemPortInfo), n); + g_array_set_clear_func (array, (GDestroyNotify) clear_modem_port_info); for (i = 0; i < n; i++) { MMModemPortInfo info;