From b28cb7da78ba5545be4bd98a05dc4c1e0608c9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sat, 7 Aug 2004 14:31:52 +0000 Subject: [PATCH] mutex buglet, From: Luke Howard git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14098 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/gssapi/arcfour.c | 6 +++--- lib/gssapi/krb5/arcfour.c | 6 +++--- lib/gssapi/krb5/unwrap.c | 8 +++++--- lib/gssapi/unwrap.c | 8 +++++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/gssapi/arcfour.c b/lib/gssapi/arcfour.c index c1daf7c01..4e9772e8c 100644 --- a/lib/gssapi/arcfour.c +++ b/lib/gssapi/arcfour.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003 Kungliga Tekniska Högskolan + * Copyright (c) 2003 - 2004 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -317,7 +317,7 @@ _gssapi_verify_mic_arcfour(OM_uint32 * minor_status, HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); omret = gssapi_msg_order_check(context_handle->order, seq_number); - HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); if (omret) return omret; @@ -624,7 +624,7 @@ OM_uint32 _gssapi_unwrap_arcfour(OM_uint32 *minor_status, HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); omret = gssapi_msg_order_check(context_handle->order, seq_number); - HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); if (omret) return omret; diff --git a/lib/gssapi/krb5/arcfour.c b/lib/gssapi/krb5/arcfour.c index c1daf7c01..4e9772e8c 100644 --- a/lib/gssapi/krb5/arcfour.c +++ b/lib/gssapi/krb5/arcfour.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003 Kungliga Tekniska Högskolan + * Copyright (c) 2003 - 2004 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -317,7 +317,7 @@ _gssapi_verify_mic_arcfour(OM_uint32 * minor_status, HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); omret = gssapi_msg_order_check(context_handle->order, seq_number); - HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); if (omret) return omret; @@ -624,7 +624,7 @@ OM_uint32 _gssapi_unwrap_arcfour(OM_uint32 *minor_status, HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); omret = gssapi_msg_order_check(context_handle->order, seq_number); - HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); if (omret) return omret; diff --git a/lib/gssapi/krb5/unwrap.c b/lib/gssapi/krb5/unwrap.c index 876122043..f3a1b989f 100644 --- a/lib/gssapi/krb5/unwrap.c +++ b/lib/gssapi/krb5/unwrap.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2004 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -63,10 +63,12 @@ gss_krb5_get_remotekey(const gss_ctx_id_t context_handle, krb5_auth_con_getkey(gssapi_krb5_context, context_handle->auth_context, &skey); - HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); - if(skey == NULL) + if(skey == NULL) { + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); return GSS_KRB5_S_KG_NO_SUBKEY; /* XXX */ + } } + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); *key = skey; return 0; } diff --git a/lib/gssapi/unwrap.c b/lib/gssapi/unwrap.c index 876122043..f3a1b989f 100644 --- a/lib/gssapi/unwrap.c +++ b/lib/gssapi/unwrap.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2004 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -63,10 +63,12 @@ gss_krb5_get_remotekey(const gss_ctx_id_t context_handle, krb5_auth_con_getkey(gssapi_krb5_context, context_handle->auth_context, &skey); - HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); - if(skey == NULL) + if(skey == NULL) { + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); return GSS_KRB5_S_KG_NO_SUBKEY; /* XXX */ + } } + HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex); *key = skey; return 0; }