rdisc: fix leak of DNS domains

This commit is contained in:
Dan Williams 2015-04-09 15:38:20 -05:00
parent 0be3678466
commit 272943db4b

View file

@ -477,7 +477,6 @@ clean_dns_domains (NMRDisc *rdisc, guint32 now, NMRDiscConfigMap *changed, guint
continue;
if (now >= expiry) {
g_free (item->domain);
g_array_remove_index (rdisc->dns_domains, i--);
*changed |= NM_RDISC_CONFIG_DNS_DOMAINS;
} else if (now >= refresh)
@ -537,6 +536,12 @@ nm_rdisc_ra_received (NMRDisc *rdisc, guint32 now, NMRDiscConfigMap changed)
/******************************************************************/
static void
dns_domain_free (gpointer data)
{
g_free (((NMRDiscDNSDomain *)(data))->domain);
}
static void
nm_rdisc_init (NMRDisc *rdisc)
{
@ -545,6 +550,7 @@ nm_rdisc_init (NMRDisc *rdisc)
rdisc->routes = g_array_new (FALSE, FALSE, sizeof (NMRDiscRoute));
rdisc->dns_servers = g_array_new (FALSE, FALSE, sizeof (NMRDiscDNSServer));
rdisc->dns_domains = g_array_new (FALSE, FALSE, sizeof (NMRDiscDNSDomain));
g_array_set_clear_func (rdisc->dns_domains, dns_domain_free);
rdisc->hop_limit = 64;
}