From deb075eb058bcb121f98c25da5db102839ad44d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Fri, 19 Dec 2003 01:25:12 +0000 Subject: [PATCH] protect error_string with mutex git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13237 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/error_string.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/krb5/error_string.c b/lib/krb5/error_string.c index 0d0a5253d..3c8789be6 100644 --- a/lib/krb5/error_string.c +++ b/lib/krb5/error_string.c @@ -41,17 +41,21 @@ RCSID("$Id$"); void krb5_free_error_string(krb5_context context, char *str) { + HEIMDAL_MUTEX_lock(context->mutex); if (str != context->error_buf) free(str); + HEIMDAL_MUTEX_unlock(context->mutex); } void krb5_clear_error_string(krb5_context context) { + HEIMDAL_MUTEX_lock(context->mutex); if (context->error_string != NULL && context->error_string != context->error_buf) free(context->error_string); context->error_string = NULL; + HEIMDAL_MUTEX_unlock(context->mutex); } krb5_error_code @@ -72,24 +76,34 @@ krb5_vset_error_string(krb5_context context, const char *fmt, va_list args) __attribute__ ((format (printf, 2, 0))) { krb5_clear_error_string(context); + HEIMDAL_MUTEX_lock(context->mutex); vasprintf(&context->error_string, fmt, args); if(context->error_string == NULL) { vsnprintf (context->error_buf, sizeof(context->error_buf), fmt, args); context->error_string = context->error_buf; } + HEIMDAL_MUTEX_unlock(context->mutex); return 0; } char* krb5_get_error_string(krb5_context context) { - char *ret = context->error_string; + char *ret; + + HEIMDAL_MUTEX_lock(context->mutex); + ret = context->error_string; context->error_string = NULL; + HEIMDAL_MUTEX_unlock(context->mutex); return ret; } krb5_boolean krb5_have_error_string(krb5_context context) { - return context->error_string != NULL; + char *str; + HEIMDAL_MUTEX_lock(context->mutex); + str = context->error_string; + HEIMDAL_MUTEX_unlock(context->mutex); + return str != NULL; }