diff --git a/vpn-daemons/openvpn/ChangeLog b/vpn-daemons/openvpn/ChangeLog index 750d74359d..6a991a32be 100644 --- a/vpn-daemons/openvpn/ChangeLog +++ b/vpn-daemons/openvpn/ChangeLog @@ -1,3 +1,10 @@ +2006-12-07 Dan Williams + + Patch from Christian Persch + + * auth-dialog/main.c + - Fix memleak by unrefing the GnomeProgram instance (Gnome.org #383110) + 2006-12-07 Dan Williams Patch from Christian Persch diff --git a/vpn-daemons/openvpn/auth-dialog/main.c b/vpn-daemons/openvpn/auth-dialog/main.c index 60b86b0d5e..a58c72691f 100644 --- a/vpn-daemons/openvpn/auth-dialog/main.c +++ b/vpn-daemons/openvpn/auth-dialog/main.c @@ -327,8 +327,9 @@ main (int argc, char *argv[]) static gchar *vpn_service = NULL; GError *error = NULL; GOptionContext *context; + GnomeProgram *program = NULL; int bytes_read; - static GOptionEntry entries[] = + GOptionEntry entries[] = { { "reprompt", 'r', 0, G_OPTION_ARG_NONE, &retry, "Reprompt for passwords", NULL}, { "name", 'n', 0, G_OPTION_ARG_STRING, &vpn_name, "Name of VPN connection", NULL}, @@ -345,8 +346,12 @@ main (int argc, char *argv[]) context = g_option_context_new ("- openvpn auth dialog"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); - g_option_context_add_group (context, gtk_get_option_group (TRUE)); - g_option_context_parse (context, &argc, &argv, &error); + + program = gnome_program_init ("nm-openvpn-auth-dialog", VERSION, + LIBGNOMEUI_MODULE, + argc, argv, + GNOME_PARAM_GOPTION_CONTEXT, context, + GNOME_PARAM_NONE); if (vpn_name == NULL || vpn_service == NULL) { fprintf (stderr, "Have to supply both name and service\n"); @@ -358,11 +363,6 @@ main (int argc, char *argv[]) goto out; } - gnome_program_init ("nm-openvpn-auth-dialog", VERSION, LIBGNOMEUI_MODULE, - argc, argv, - GNOME_PARAM_NONE, GNOME_PARAM_NONE); - - gconf_client = gconf_client_get_default(); escaped_name = gconf_escape_key (vpn_name, strlen (vpn_name)); gconf_key = g_strdup_printf ("%s/%s/vpn_data", GCONF_PATH_VPN_CONNECTIONS, escaped_name); @@ -435,8 +435,10 @@ main (int argc, char *argv[]) bytes_read = fread (buf, sizeof (char), sizeof (buf), stdin); out: - g_object_unref (gconf_client); - g_option_context_free (context); + if (gconf_client) + g_object_unref (gconf_client); + + g_object_unref (program); g_free (connection_type); g_free (key);