diff options
author | guidog <guidog@517b70f8-ed25-0410-8bf6-f5db08f7b76e> | 2009-01-10 13:25:34 +0000 |
---|---|---|
committer | guidog <guidog@517b70f8-ed25-0410-8bf6-f5db08f7b76e> | 2009-01-10 13:25:34 +0000 |
commit | 36b2571783d7e8c70e69cc084221ac5d0941151b (patch) | |
tree | 6d66241119ebfac16e6c0e14a384dfc263530ed5 | |
parent | 3b59b5208ffc792eea1aca89efe3b72545ec1d12 (diff) |
use get_error_message() when possible
since it gives clearer error messages
git-svn-id: http://svn.gnome.org/svn/krb5-auth-dialog/trunk@106 517b70f8-ed25-0410-8bf6-f5db08f7b76e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/krb5-auth-dialog.c | 23 |
3 files changed, 29 insertions, 2 deletions
@@ -1,3 +1,10 @@ +Sun Jan 4 16:21:20 CET 2009 Guido Günther <agx@sigxcpu.org> + + use get_error_message() when possible + * configure.ac: check for krb5_get_error_message + * src/krb5-auth-dialog.c (get_error_message): new function + (ka_error_dialog): check for KRB5_LIBOS_PWDINTR + Sun Jan 4 16:18:19 CET 2009 Guido Günther <agx@sigxcpu.org> * src/krb-auth-dialog.[ch]: separate ticket renewal and interactive diff --git a/configure.ac b/configure.ac index e947e91..998d373 100644 --- a/configure.ac +++ b/configure.ac @@ -59,6 +59,7 @@ AC_CHECK_MEMBERS(krb5_creds.flags.b.forwardable,,,[#include <krb5.h>]) AC_CHECK_MEMBERS(krb5_creds.flags.b.renewable,,,[#include <krb5.h>]) AC_CHECK_MEMBERS(krb5_creds.flags.b.proxiable,,,[#include <krb5.h>]) AC_CHECK_MEMBERS(krb5_creds.flags,,,[#include <krb5.h>]) +AC_CHECK_FUNCS([krb5_get_error_message]) AC_CHECK_FUNCS([krb5_get_renewed_creds]) AC_MSG_CHECKING(if a krb5_principal->realm is a char*) AC_COMPILE_IFELSE([ diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c index 7093520..8c8bd7c 100644 --- a/src/krb5-auth-dialog.c +++ b/src/krb5-auth-dialog.c @@ -125,6 +125,23 @@ get_principal_realm_data(krb5_principal p) return p->realm.data; #endif } + +static const char* +get_error_message(krb5_context context, krb5_error_code err) +{ + const char *msg = NULL; + +#if defined(HAVE_KRB5_GET_ERROR_MESSAGE) + msg = krb5_get_error_message(context, err); +#else + msg = error_message(err); +#endif + if (msg == NULL) + return "unknown error"; + else + return msg; +} + /* ***************************************************************** */ /* ***************************************************************** */ @@ -501,6 +518,7 @@ grab_credentials (Krb5AuthApplet* applet) invalid_password = TRUE; goto out; default: + g_warning("Auth failed with %d: %s", retval, get_error_message(kcontext, retval)); break; } goto out; @@ -656,7 +674,7 @@ ka_destroy_cache (GtkMenuItem *menuitem, gpointer data) static void ka_error_dialog(int err) { - const char* msg = error_message(err); + const char* msg = get_error_message(kcontext, err); GtkWidget *dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, @@ -683,7 +701,8 @@ ka_grab_credentials (Krb5AuthApplet* applet) retry = TRUE; break; case 0: /* success */ - case KRB5_LIBOS_CANTREADPWD: /* canceled */ + case KRB5_LIBOS_PWDINTR: /* canceled (heimdal) */ + case KRB5_LIBOS_CANTREADPWD: /* canceled (mit) */ retry = FALSE; break; case KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN: |