File bug749735.patch of Package compat-openssl098.29205

Index: openssl-0.9.8j/crypto/asn1/x_pubkey.c
===================================================================
--- openssl-0.9.8j.orig/crypto/asn1/x_pubkey.c
+++ openssl-0.9.8j/crypto/asn1/x_pubkey.c
@@ -367,7 +367,19 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *k
 		goto err;
 		}
 
-	key->pkey = ret;
+	/* Check to see if another thread set key->pkey first */
+	CRYPTO_w_lock(CRYPTO_LOCK_EVP_PKEY);
+	if (key->pkey)
+	{
+		CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
+		EVP_PKEY_free(ret);
+		ret = key->pkey;
+	}
+	else
+	{
+		key->pkey = ret;
+		CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
+	}
 	CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);
 	return(ret);
 err:
openSUSE Build Service is sponsored by