diff --git a/ChangeLog b/ChangeLog index 9633b98cd0..5c37084d99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-21 Dan Williams + + * src/NetworkManagerPolicy.c + - (update_etc_hosts): don't leak errors, and ensure that + g_file_set_contents() gets a valid error placeholder (rh #461933) + 2008-10-21 Dan Williams * src/nm-manager.c diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c index bfa3540941..5f0970457d 100644 --- a/src/NetworkManagerPolicy.c +++ b/src/NetworkManagerPolicy.c @@ -266,6 +266,8 @@ update_etc_hosts (const char *hostname) nm_warning ("%s: couldn't read " SYSCONFDIR "/hosts: (%d) %s", __func__, error ? error->code : 0, (error && error->message) ? error->message : "(unknown)"); + if (error) + g_error_free (error); } else { lines = g_strsplit_set (contents, "\n\r", 0); g_free (contents); @@ -312,10 +314,13 @@ update_etc_hosts (const char *hostname) g_string_append (new_contents, "127.0.0.1\t" FALLBACK_HOSTNAME "\tlocalhost"); } + error = NULL; if (!g_file_set_contents (SYSCONFDIR "/hosts", new_contents->str, -1, &error)) { nm_warning ("%s: couldn't update " SYSCONFDIR "/hosts: (%d) %s", __func__, error ? error->code : 0, (error && error->message) ? error->message : "(unknown)"); + if (error) + g_error_free (error); } else success = TRUE;