Commit 4242a090 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

PR: 2813

Reported by: Constantine Sapuntzakis <csapuntz@gmail.com>

Fix possible deadlock when decoding public keys.
parent c3b13033
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -291,6 +291,9 @@


 Changes between 1.0.1c and 1.0.1d [xx XXX xxxx]
 Changes between 1.0.1c and 1.0.1d [xx XXX xxxx]


  *) Fix possible deadlock when decoding public keys.
     [Steve Henson]

  *) Don't use TLS 1.0 record version number in initial client hello
  *) Don't use TLS 1.0 record version number in initial client hello
     if renegotiating.
     if renegotiating.
     [Steve Henson]
     [Steve Henson]
+4 −1
Original line number Original line Diff line number Diff line
@@ -175,12 +175,15 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
	CRYPTO_w_lock(CRYPTO_LOCK_EVP_PKEY);
	CRYPTO_w_lock(CRYPTO_LOCK_EVP_PKEY);
	if (key->pkey)
	if (key->pkey)
		{
		{
		CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
		EVP_PKEY_free(ret);
		EVP_PKEY_free(ret);
		ret = key->pkey;
		ret = key->pkey;
		}
		}
	else
	else
		{
		key->pkey = ret;
		key->pkey = ret;
		CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
		CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
		}
	CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);
	CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);


	return ret;
	return ret;