From 4854adc216dabece8554772216f61ef19548f1cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 4 Dec 2007 16:56:02 +0000 Subject: [PATCH] Make krb5_get_error_string return an allocated string to make the function indempotent. From Zeqing (Fred) Xia. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22142 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/error_string.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/krb5/error_string.c b/lib/krb5/error_string.c index 211f07c85..631b86d7f 100644 --- a/lib/krb5/error_string.c +++ b/lib/krb5/error_string.c @@ -86,14 +86,26 @@ krb5_vset_error_string(krb5_context context, const char *fmt, va_list args) return 0; } +/** + * Return the error message in context. On error or no error string, + * the function returns NULL. + * + * @param context Kerberos 5 context + * + * @return an error string, needs to be freed with + * krb5_free_error_string(). The functions return NULL on error. + * + * @ingroup krb5_error + */ + char * KRB5_LIB_FUNCTION krb5_get_error_string(krb5_context context) { - char *ret; + char *ret = NULL; HEIMDAL_MUTEX_lock(context->mutex); - ret = context->error_string; - context->error_string = NULL; + if (context->error_string) + ret = strdup(context->error_string); HEIMDAL_MUTEX_unlock(context->mutex); return ret; } @@ -115,8 +127,8 @@ krb5_have_error_string(krb5_context context) * @param context Kerberos 5 context * @param code Error code related to the error * - * @return an error string, needs to be freed with krb5_xfree(). The - * functions return NULL on error. + * @return an error string, needs to be freed with + * krb5_free_error_string(). The functions return NULL on error. * * @ingroup krb5_error */