summaryrefslogtreecommitdiff
path: root/source4/heimdal/lib/gssapi/display_status.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2005-10-25 13:43:37 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:45:15 -0500
commit4019064c5d866015a0d78b32dd051ec1dacf8ebf (patch)
treef904d6178cd36f357e969c40ea2336d1ebcbb22e /source4/heimdal/lib/gssapi/display_status.c
parentd27ffc27ffd5ab57b5e0124203a08a3bb70aa1e1 (diff)
downloadsamba-4019064c5d866015a0d78b32dd051ec1dacf8ebf.tar.gz
samba-4019064c5d866015a0d78b32dd051ec1dacf8ebf.tar.bz2
samba-4019064c5d866015a0d78b32dd051ec1dacf8ebf.zip
r11294: Update Heimdal in Samba4 to lorikeet-heimdal (which is in turn updated
to CVS of 2005-10-24). Andrew Bartlett (This used to be commit 939d4f340feaad15d0a6a5da79feba2b2558f174)
Diffstat (limited to 'source4/heimdal/lib/gssapi/display_status.c')
-rw-r--r--source4/heimdal/lib/gssapi/display_status.c42
1 files changed, 32 insertions, 10 deletions
diff --git a/source4/heimdal/lib/gssapi/display_status.c b/source4/heimdal/lib/gssapi/display_status.c
index 6e9456aa2e..0aa88bb57c 100644
--- a/source4/heimdal/lib/gssapi/display_status.c
+++ b/source4/heimdal/lib/gssapi/display_status.c
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: display_status.c,v 1.13 2005/08/23 08:30:55 lha Exp $");
+RCSID("$Id: display_status.c,v 1.14 2005/10/12 07:23:03 lha Exp $");
static const char *
calling_error(OM_uint32 v)
@@ -112,25 +112,47 @@ supplementary_error(OM_uint32 v)
}
void
-gssapi_krb5_set_error_string (void)
+gssapi_krb5_clear_status (void)
{
struct gssapi_thr_context *ctx = gssapi_get_thread_context(1);
- char *e;
+ if (ctx == NULL)
+ return;
+ HEIMDAL_MUTEX_lock(&ctx->mutex);
+ if (ctx->error_string)
+ free(ctx->error_string);
+ ctx->error_string = NULL;
+ HEIMDAL_MUTEX_unlock(&ctx->mutex);
+}
+
+void
+gssapi_krb5_set_status (const char *fmt, ...)
+{
+ struct gssapi_thr_context *ctx = gssapi_get_thread_context(1);
+ va_list args;
if (ctx == NULL)
return;
HEIMDAL_MUTEX_lock(&ctx->mutex);
+ va_start(args, fmt);
if (ctx->error_string)
free(ctx->error_string);
+ /* ignore failures, will use status code instead */
+ vasprintf(&ctx->error_string, fmt, args);
+ va_end(args);
+ HEIMDAL_MUTEX_unlock(&ctx->mutex);
+}
+
+void
+gssapi_krb5_set_error_string (void)
+{
+ char *e;
+
e = krb5_get_error_string(gssapi_krb5_context);
- if (e == NULL)
- ctx->error_string = NULL;
- else {
- /* ignore failures, will use status code instead */
- ctx->error_string = strdup(e);
+ if (e) {
+ gssapi_krb5_set_status("%s", e);
krb5_free_error_string(gssapi_krb5_context, e);
- }
- HEIMDAL_MUTEX_unlock(&ctx->mutex);
+ } else
+ gssapi_krb5_clear_status();
}
char *