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); }