aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcaillon <caillon@517b70f8-ed25-0410-8bf6-f5db08f7b76e>2005-10-31 19:45:12 +0000
committercaillon <caillon@517b70f8-ed25-0410-8bf6-f5db08f7b76e>2005-10-31 19:45:12 +0000
commit8e7e09803f1d1f402dbf75940000020664b525d7 (patch)
tree18f3da7203a88341542f55844a261822d9720866 /src
parent63a0df578ddfee1a279c041f21a09ca4f8f5e89d (diff)
2005-10-31 Christopher Aillon <caillon@redhat.com>
* src/krb5-auth-dialog.c: Memleak fixes Also, respect the hidden field of krb5_prompt git-svn-id: http://svn.gnome.org/svn/krb5-auth-dialog/trunk@33 517b70f8-ed25-0410-8bf6-f5db08f7b76e
Diffstat (limited to 'src')
-rw-r--r--src/krb5-auth-dialog.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c
index 2bd2215..6795f0c 100644
--- a/src/krb5-auth-dialog.c
+++ b/src/krb5-auth-dialog.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004 Red Hat, Inc.
+ * Copyright (C) 2004,2005 Red Hat, Inc.
* Authored by Christopher Aillon <caillon@redhat.com>
*
* This program is free software; you can redistribute it and/or modify
@@ -73,7 +73,8 @@ krb5_auth_dialog_wrong_label_update_expiry (gpointer data)
static void
krb5_auth_dialog_setup (GtkWidget *dialog,
- const gchar *krb5prompt)
+ const gchar *krb5prompt,
+ gboolean hide_password)
{
GtkWidget *entry;
GtkWidget *label;
@@ -106,6 +107,7 @@ krb5_auth_dialog_setup (GtkWidget *dialog,
/* Clear the password entry field */
entry = glade_xml_get_widget (xml, "krb5_entry");
gtk_entry_set_text (GTK_ENTRY (entry), "");
+ gtk_entry_set_visibility (GTK_ENTRY (entry), !hide_password);
/* Use the prompt label that krb5 provides us */
label = glade_xml_get_widget (xml, "krb5_message_label");
@@ -172,7 +174,7 @@ krb5_gtk_prompter (krb5_context ctx,
errcode = KRB5_LIBOS_CANTREADPWD;
entry = glade_xml_get_widget(xml, "krb5_entry");
- krb5_auth_dialog_setup (dialog, (gchar *) prompts[i].prompt);
+ krb5_auth_dialog_setup (dialog, (gchar *) prompts[i].prompt, prompts[i].hidden);
wrong_label = glade_xml_get_widget (xml, "krb5_wrong_label");
source_id = g_timeout_add (5000, (GSourceFunc)krb5_auth_dialog_wrong_label_update_expiry,
@@ -252,10 +254,6 @@ credentials_expiring_real (void)
memset (&my_creds, 0, sizeof(my_creds));
- code = krb5_init_context (&kcontext);
- if (code)
- return FALSE;
-
if ((code = krb5_cc_default(kcontext, &cache)))
return FALSE;
@@ -306,13 +304,15 @@ credentials_expiring_real (void)
do_v4_ccache(0);
#endif
if (exit_status)
- gtk_exit(exit_status);
+ gtk_exit(exit_status);
}
else
{
gtk_exit(1);
}
+ krb5_cc_close(kcontext, cache);
+
return retval;
}
@@ -329,24 +329,16 @@ static int
renew_credentials (void)
{
krb5_error_code retval;
- krb5_get_init_creds_opt options;
krb5_creds my_creds;
krb5_ccache ccache;
- memset(&my_creds, 0, sizeof(my_creds));
- krb5_get_init_creds_opt_init(&options);
-
- retval = krb5_init_context(&kcontext);
- if (retval)
- return retval;
-
retval = krb5_parse_name(kcontext, g_get_user_name (), &kprincipal);
if (retval)
return retval;
retval = krb5_get_init_creds_password(kcontext, &my_creds, kprincipal,
NULL, krb5_gtk_prompter, 0,
- 0, NULL, &options);
+ 0, NULL, NULL);
if (retval)
{
if (retval == KRB5KRB_AP_ERR_BAD_INTEGRITY)
@@ -364,13 +356,18 @@ renew_credentials (void)
retval = krb5_cc_initialize(kcontext, ccache, kprincipal);
if (retval)
- return retval;
+ goto out;
retval = krb5_cc_store_cred(kcontext, ccache, &my_creds);
if (retval)
- return retval;
+ goto out;
- return 0;
+out:
+ krb5_cc_close (kcontext, ccache);
+ if (kprincipal)
+ krb5_free_principal (kcontext, kprincipal);
+
+ return retval;
}
gboolean
@@ -432,6 +429,8 @@ using_krb5()
return TRUE;
have_tgt = get_tgt_from_ccache(kcontext, &creds);
+ if (have_tgt)
+ krb5_free_cred_contents (kcontext, &creds);
return have_tgt;
}