Commit 2d789604 authored by Bodo Möller's avatar Bodo Möller
Browse files

Bugfix: use write locks, not just read locks

parent c4558f82
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -558,7 +558,7 @@ const char *ERR_lib_error_string(unsigned long e)

	l=ERR_GET_LIB(e);

	CRYPTO_r_lock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_lock(CRYPTO_LOCK_ERR_HASH);

	if (error_hash != NULL)
		{
@@ -566,7 +566,7 @@ const char *ERR_lib_error_string(unsigned long e)
		p=(ERR_STRING_DATA *)lh_retrieve(error_hash,&d);
		}

	CRYPTO_r_unlock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_unlock(CRYPTO_LOCK_ERR_HASH);

	return((p == NULL)?NULL:p->string);
	}
@@ -579,7 +579,7 @@ const char *ERR_func_error_string(unsigned long e)
	l=ERR_GET_LIB(e);
	f=ERR_GET_FUNC(e);

	CRYPTO_r_lock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_lock(CRYPTO_LOCK_ERR_HASH);

	if (error_hash != NULL)
		{
@@ -587,7 +587,7 @@ const char *ERR_func_error_string(unsigned long e)
		p=(ERR_STRING_DATA *)lh_retrieve(error_hash,&d);
		}

	CRYPTO_r_unlock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_unlock(CRYPTO_LOCK_ERR_HASH);

	return((p == NULL)?NULL:p->string);
	}
@@ -600,7 +600,7 @@ const char *ERR_reason_error_string(unsigned long e)
	l=ERR_GET_LIB(e);
	r=ERR_GET_REASON(e);

	CRYPTO_r_lock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_lock(CRYPTO_LOCK_ERR_HASH);

	if (error_hash != NULL)
		{
@@ -613,7 +613,7 @@ const char *ERR_reason_error_string(unsigned long e)
			}
		}

	CRYPTO_r_unlock(CRYPTO_LOCK_ERR_HASH);
	CRYPTO_w_unlock(CRYPTO_LOCK_ERR_HASH);

	return((p == NULL)?NULL:p->string);
	}
@@ -674,13 +674,13 @@ ERR_STATE *ERR_get_state(void)

	pid=(unsigned long)CRYPTO_thread_id();

	CRYPTO_r_lock(CRYPTO_LOCK_ERR);
	CRYPTO_w_lock(CRYPTO_LOCK_ERR);
	if (thread_hash != NULL)
		{
		tmp.pid=pid;
		ret=(ERR_STATE *)lh_retrieve(thread_hash,&tmp);
		}
	CRYPTO_r_unlock(CRYPTO_LOCK_ERR);
	CRYPTO_w_unlock(CRYPTO_LOCK_ERR);

	/* ret == the error state, if NULL, make a new one */
	if (ret == NULL)