iface-modem-3gpp: fix memory leak when processing PCOs

==109786== 2,798 (96 direct, 2,702 indirect) bytes in 2 blocks are definitely lost in loss record 5,882 of 5,903
  ==109786==    at 0x4841888: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==109786==    by 0x4A01329: g_malloc (gmem.c:130)
  ==109786==    by 0x4A23F17: g_slice_alloc (gslice.c:1074)
  ==109786==    by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:488)
  ==109786==    by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:626)
  ==109786==    by 0x4A4B8F8: g_variant_builder_end (gvariant.c:3756)
  ==109786==    by 0x48FD6DC: mm_pco_to_variant (mm-pco.c:251)
  ==109786==    by 0x1AB397: mm_iface_modem_3gpp_update_pco_list (mm-iface-modem-3gpp.c:2274)
  ==109786==    by 0x2306DF: ms_basic_connect_extensions_notification_pco (mm-broadband-modem-mbim.c:5101)
  ==109786==    by 0x2306DF: ms_basic_connect_extensions_notification (mm-broadband-modem-mbim.c:5280)
  ==109786==    by 0x2306DF: device_notification_cb (mm-broadband-modem-mbim.c:5332)
  ==109786==    by 0x4CD3BD6: g_cclosure_marshal_VOID__BOXEDv (gmarshal.c:1686)
  ==109786==    by 0x4CED11B: UnknownInlinedFun (gclosure.c:895)
  ==109786==    by 0x4CED11B: g_signal_emit_valist (gsignal.c:3456)
  ==109786==    by 0x4CED203: g_signal_emit (gsignal.c:3606)
  ==109786==    by 0x50ADA0F: indication_ready (mbim-device.c:870)
  ==109786==    by 0x4B92DD3: g_task_return_now (gtask.c:1232)
This commit is contained in:
Aleksander Morgado
2022-11-08 21:29:56 +00:00
parent 64c77e3114
commit 24fd0026ec
+4 -2
View File
@@ -2271,8 +2271,10 @@ mm_iface_modem_3gpp_update_pco_list (MMIfaceModem3gpp *self,
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ubay)"));
for (iter = pco_list; iter; iter = g_list_next (iter)) {
g_variant_builder_add_value (&builder,
mm_pco_to_variant (MM_PCO (iter->data)));
g_autoptr(GVariant) pco_variant = NULL;
pco_variant = mm_pco_to_variant (MM_PCO (iter->data));
g_variant_builder_add_value (&builder, pco_variant);
}
variant = g_variant_ref_sink (g_variant_builder_end (&builder));
mm_gdbus_modem3gpp_set_pco (skeleton, variant);