webrtc: Plug leaks of resolved ICE addresses
authorMartin Nordholts <martn@axis.com>
Wed, 19 Apr 2023 14:59:01 +0000 (16:59 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 25 Apr 2023 10:02:31 +0000 (11:02 +0100)
The addresses we get from `resolve_host_finish()` (via
`resolve_host_async()`, `resolve_host_main_cb()`, `on_resolve_host()`,
`g_resolver_lookup_by_name_finish()`) must be freed. Otherwise we leak
memory.

Leak found and confirmed fixed with GCC AddressSanitizer.

Change-Id: If32d24452d626234f01b253b77a7d6d16eac1cee
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4482>

subprojects/gst-plugins-bad/gst-libs/gst/webrtc/nice/nice.c

index d7feae1..f62eb91 100644 (file)
@@ -750,6 +750,8 @@ on_candidate_resolved (GstWebRTCICE * ice, GAsyncResult * res,
   }
 
   new_addr = g_inet_address_to_string (addresses->data);
+  g_resolver_free_addresses (addresses);
+  addresses = NULL;
 
   new_candv[0] = rc->prefix;
   new_candv[1] = new_addr;
@@ -1317,6 +1319,8 @@ on_http_proxy_resolved (GstWebRTCICE * ice, GAsyncResult * res,
 
   /* XXX: only the first IP is used */
   ip = g_inet_address_to_string (addresses->data);
+  g_resolver_free_addresses (addresses);
+  addresses = NULL;
 
   if (!ip) {
     GST_ERROR_OBJECT (ice, "failed to resolve host for proxy");