Fix two invalid memory reads in RSA OAEP mode.
[openssl.git] / crypto / rsa / rsa_eay.c
index a1ecd6d478732e446695dae95f27ad54601c66de..7f58a8989107ca39824e1f939960aa119db077da 100644 (file)
@@ -263,8 +263,10 @@ err:
 static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx)
 {
        BN_BLINDING *ret;
+       CRYPTO_THREADID tid;
        int got_write_lock = 0;
 
+       CRYPTO_THREADID_set(&tid);
        CRYPTO_r_lock(CRYPTO_LOCK_RSA);
 
        if (rsa->blinding == NULL)
@@ -281,7 +283,7 @@ static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx)
        if (ret == NULL)
                goto err;
 
-       if ((BN_BLINDING_get_thread_id(ret) == CRYPTO_thread_id()) && (BN_BLINDING_get_thread_idptr(ret) == CRYPTO_thread_idptr()))
+       if (!BN_BLINDING_cmp_thread(ret, &tid))
                {
                /* rsa->blinding is ours! */