From d7cf8b175c55dcb0ff83ec2d575e5a2c2391bda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 15 Mar 2005 22:27:31 +0000 Subject: [PATCH] (gssapi_krb5_set_error_string): don't misuse the krb5_get_error_string api git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14641 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/gssapi/display_status.c | 12 ++++++++++-- lib/gssapi/krb5/display_status.c | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/gssapi/display_status.c b/lib/gssapi/display_status.c index bbe1c5ff3..f91ae7e39 100644 --- a/lib/gssapi/display_status.c +++ b/lib/gssapi/display_status.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1998 - 2005 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -115,13 +115,21 @@ void gssapi_krb5_set_error_string (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 = krb5_get_error_string(gssapi_krb5_context); + 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); + krb5_free_error_string(e); + } HEIMDAL_MUTEX_unlock(&ctx->mutex); } diff --git a/lib/gssapi/krb5/display_status.c b/lib/gssapi/krb5/display_status.c index bbe1c5ff3..f91ae7e39 100644 --- a/lib/gssapi/krb5/display_status.c +++ b/lib/gssapi/krb5/display_status.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1998 - 2005 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -115,13 +115,21 @@ void gssapi_krb5_set_error_string (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 = krb5_get_error_string(gssapi_krb5_context); + 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); + krb5_free_error_string(e); + } HEIMDAL_MUTEX_unlock(&ctx->mutex); }