aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguidog <guidog@517b70f8-ed25-0410-8bf6-f5db08f7b76e>2009-01-10 13:25:34 +0000
committerguidog <guidog@517b70f8-ed25-0410-8bf6-f5db08f7b76e>2009-01-10 13:25:34 +0000
commit36b2571783d7e8c70e69cc084221ac5d0941151b (patch)
tree6d66241119ebfac16e6c0e14a384dfc263530ed5
parent3b59b5208ffc792eea1aca89efe3b72545ec1d12 (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--ChangeLog7
-rw-r--r--configure.ac1
-rw-r--r--src/krb5-auth-dialog.c23
3 files changed, 29 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 292c1c5..17b78f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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: