From d3102c1d26e8ecd34fce241dc7a922c745f6423f Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Sat, 7 Oct 2006 01:30:59 +0000 Subject: [PATCH] Use const pointers for error messages. Add some debugging hooks in the libkrb5 support. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18661 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/k5-err.h | 4 ++-- src/include/krb5/krb5.hin | 4 ++-- src/lib/krb5/krb/kerrs.c | 42 +++++++++++++++++++++++++++++++++++++-- src/util/support/errors.c | 8 ++++---- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/include/k5-err.h b/src/include/k5-err.h index 29f41f12b..c2cc52cee 100644 --- a/src/include/k5-err.h +++ b/src/include/k5-err.h @@ -57,10 +57,10 @@ krb5int_set_error (struct errinfo *ep, void krb5int_vset_error (struct errinfo *ep, long code, const char *fmt, va_list args); -char * +const char * krb5int_get_error (struct errinfo *ep, long code); void -krb5int_free_error (struct errinfo *ep, char *msg); +krb5int_free_error (struct errinfo *ep, const char *msg); void krb5int_clear_error (struct errinfo *ep); void diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin index 354ff12b1..2ad6be9c8 100644 --- a/src/include/krb5/krb5.hin +++ b/src/include/krb5/krb5.hin @@ -2597,10 +2597,10 @@ krb5_vset_error_message (krb5_context, krb5_error_code, const char *, va_list); * The string returned by this function must be freed using * krb5_free_error_message. */ -char * KRB5_CALLCONV +const char * KRB5_CALLCONV krb5_get_error_message (krb5_context, krb5_error_code); void KRB5_CALLCONV -krb5_free_error_message (krb5_context, char *); +krb5_free_error_message (krb5_context, const char *); void KRB5_CALLCONV krb5_clear_error_message (krb5_context); diff --git a/src/lib/krb5/krb/kerrs.c b/src/lib/krb5/krb/kerrs.c index 448b38910..77f497688 100644 --- a/src/lib/krb5/krb/kerrs.c +++ b/src/lib/krb5/krb/kerrs.c @@ -28,6 +28,13 @@ #include #include "k5-int.h" +#ifdef DEBUG +static int error_message_debug = 0; +#ifndef ERROR_MESSAGE_DEBUG +#define ERROR_MESSAGE_DEBUG() (error_message_debug != 0) +#endif +#endif + void KRB5_CALLCONV_C krb5_set_error_message (krb5_context ctx, krb5_error_code code, const char *fmt, ...) @@ -36,7 +43,17 @@ krb5_set_error_message (krb5_context ctx, krb5_error_code code, if (ctx == NULL) return; va_start (args, fmt); +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, + "krb5_set_error_message(ctx=%p/err=%p, code=%ld, ...)\n", + ctx, &ctx->err, (long) code); +#endif krb5int_vset_error (&ctx->err, code, fmt, args); +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "->%s\n", ctx->err.msg); +#endif va_end (args); } @@ -44,22 +61,39 @@ void KRB5_CALLCONV krb5_vset_error_message (krb5_context ctx, krb5_error_code code, const char *fmt, va_list args) { +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "krb5_vset_error_message(ctx=%p, code=%ld, ...)\n", + ctx, (long) code); +#endif if (ctx == NULL) return; krb5int_vset_error (&ctx->err, code, fmt, args); +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "->%s\n", ctx->err.msg); +#endif } -char * KRB5_CALLCONV +const char * KRB5_CALLCONV krb5_get_error_message (krb5_context ctx, krb5_error_code code) { +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "krb5_get_error_message(%p, %ld)\n", ctx, (long) code); +#endif if (ctx == NULL) return error_message(code); return krb5int_get_error (&ctx->err, code); } void KRB5_CALLCONV -krb5_free_error_message (krb5_context ctx, char *msg) +krb5_free_error_message (krb5_context ctx, const char *msg) { +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "krb5_free_error_message(%p, %p)\n", ctx, msg); +#endif if (ctx == NULL) return; krb5int_free_error (&ctx->err, msg); @@ -68,6 +102,10 @@ krb5_free_error_message (krb5_context ctx, char *msg) void KRB5_CALLCONV krb5_clear_error_message (krb5_context ctx) { +#ifdef DEBUG + if (ERROR_MESSAGE_DEBUG()) + fprintf(stderr, "krb5_clear_error_message(%p)\n", ctx); +#endif if (ctx == NULL) return; krb5int_clear_error (&ctx->err); diff --git a/src/util/support/errors.c b/src/util/support/errors.c index 7c93753d4..5498f8204 100644 --- a/src/util/support/errors.c +++ b/src/util/support/errors.c @@ -69,7 +69,7 @@ krb5int_vset_error (struct errinfo *ep, long code, ep->msg = p ? p : ep->scratch_buf; } -char * +const char * krb5int_get_error (struct errinfo *ep, long code) { char *r, *r2; @@ -125,7 +125,7 @@ krb5int_get_error (struct errinfo *ep, long code) sprintf (ep->scratch_buf, _("error %ld"), code); return ep->scratch_buf; } - r = fptr(code); + r = (char *) fptr(code); if (r == NULL) { unlock(); goto format_number; @@ -142,10 +142,10 @@ krb5int_get_error (struct errinfo *ep, long code) } void -krb5int_free_error (struct errinfo *ep, char *msg) +krb5int_free_error (struct errinfo *ep, const char *msg) { if (msg != ep->scratch_buf) - free (msg); + free ((char *) msg); } void -- 2.26.2