aboutsummaryrefslogtreecommitdiff
path: root/util/messages-krb5.c
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2010-02-09 16:00:04 -0800
committerRuss Allbery <rra@stanford.edu>2010-02-09 16:00:04 -0800
commitd05f66dbff10b525d37f60ee01d5b9f94bf5192e (patch)
tree36657983c619cfb7260781b2607ead4afc3ad866 /util/messages-krb5.c
parentccf1cd7efa90bdcbe834e0d4ca144289cca97fd7 (diff)
Update util code and import Kerberos portability glue
Use the Kerberos portability layer from rra-c-util 3.0 and avoid Kerberos API calls deprecated on Heimdal. Break util/util.h into separate header files and update all source files accordingly. The test suite is not yet updated. That will come in subsequent commits.
Diffstat (limited to 'util/messages-krb5.c')
-rw-r--r--util/messages-krb5.c74
1 files changed, 9 insertions, 65 deletions
diff --git a/util/messages-krb5.c b/util/messages-krb5.c
index 00f4a2e..7f35d29 100644
--- a/util/messages-krb5.c
+++ b/util/messages-krb5.c
@@ -6,76 +6,20 @@
* formatted message.
*
* Written by Russ Allbery <rra@stanford.edu>
- * Copyright 2006, 2007, 2008
+ * Copyright 2006, 2007, 2008, 2009, 2010
* Board of Trustees, Leland Stanford Jr. University
*
* See LICENSE for licensing terms.
*/
#include <config.h>
+#include <portable/krb5.h>
#include <portable/system.h>
-#include <krb5.h>
-#if !defined(HAVE_KRB5_GET_ERROR_MESSAGE) && !defined(HAVE_KRB5_GET_ERR_TEXT)
-# if defined(HAVE_IBM_SVC_KRB5_SVC_H)
-# include <ibm_svc/krb5_svc.h>
-# elif defined(HAVE_ET_COM_ERR_H)
-# include <et/com_err.h>
-# else
-# include <com_err.h>
-# endif
-#endif
-
-#include <util/util.h>
-
-/*
- * This string is returned for unknown error messages. We use a static
- * variable so that we can be sure not to free it.
- */
-static const char error_unknown[] = "unknown error";
-
-
-/*
- * Given a Kerberos error code, return the corresponding error. Prefer the
- * Kerberos interface if available since it will provide context-specific
- * error information, whereas the error_message() call will only provide a
- * fixed message.
- */
-static const char *
-get_error(krb5_context ctx UNUSED, krb5_error_code code)
-{
- const char *msg = NULL;
-
-#if defined(HAVE_KRB5_GET_ERROR_MESSAGE)
- msg = krb5_get_error_message(ctx, code);
-#elif defined(HAVE_KRB5_GET_ERR_TEXT)
- msg = krb5_get_err_text(ctx, code);
-#elif defined(HAVE_KRB5_SVC_GET_MSG)
- krb5_svc_get_msg(code, &msg);
-#else
- msg = error_message(code);
-#endif
- if (msg == NULL)
- return error_unknown;
- else
- return msg;
-}
-
-
-/*
- * Free an error string if necessary.
- */
-static void
-free_error(krb5_context ctx UNUSED, const char *msg)
-{
- if (msg == error_unknown)
- return;
-#if defined(HAVE_KRB5_FREE_ERROR_MESSAGE)
- krb5_free_error_message(ctx, msg);
-#elif defined(HAVE_KRB5_SVC_GET_MSG)
- krb5_free_string((char *) msg);
-#endif
-}
+#include <util/macros.h>
+#include <util/messages.h>
+#include <util/messages-krb5.h>
+#include <util/xmalloc.h>
/*
@@ -88,7 +32,7 @@ die_krb5(krb5_context ctx, krb5_error_code code, const char *format, ...)
char *message;
va_list args;
- k5_msg = get_error(ctx, code);
+ k5_msg = krb5_get_error_message(ctx, code);
va_start(args, format);
if (xvasprintf(&message, format, args) < 0)
die("internal error: unable to format error message");
@@ -107,12 +51,12 @@ warn_krb5(krb5_context ctx, krb5_error_code code, const char *format, ...)
char *message;
va_list args;
- k5_msg = get_error(ctx, code);
+ k5_msg = krb5_get_error_message(ctx, code);
va_start(args, format);
if (xvasprintf(&message, format, args) < 0)
die("internal error: unable to format error message");
va_end(args);
warn("%s: %s", message, k5_msg);
free(message);
- free_error(ctx, k5_msg);
+ krb5_free_error_message(ctx, k5_msg);
}