]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-8.0'
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 15 Feb 2021 14:34:54 +0000 (15:34 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 15 Feb 2021 14:34:54 +0000 (15:34 +0100)
* PHP-8.0:
  Fixed bug #80747

1  2 
ext/openssl/openssl.c

index 3c94af9c363dacdd1a5766334c4f0d6cb670b8b7,2bae0534a29707c0de6135f4bd03109ceb4e8ab7..7170e1af5281ae75ad8c58ae8bfff5258bb4f52b
@@@ -3655,18 -3671,28 +3655,20 @@@ static EVP_PKEY * php_openssl_generate_
                        case OPENSSL_KEYTYPE_RSA:
                                {
                                        RSA* rsaparam;
 -#if OPENSSL_VERSION_NUMBER < 0x10002000L
 -                                      /* OpenSSL 1.0.2 deprecates RSA_generate_key */
 -                                      PHP_OPENSSL_RAND_ADD_TIME();
 -                                      rsaparam = (RSA*)RSA_generate_key(req->priv_key_bits, RSA_F4, NULL, NULL);
 -#else
 -                                      {
 -                                              BIGNUM *bne = (BIGNUM *)BN_new();
 -                                              if (BN_set_word(bne, RSA_F4) != 1) {
 -                                                      BN_free(bne);
 -                                                      php_error_docref(NULL, E_WARNING, "Failed setting exponent");
 -                                                      return NULL;
 -                                              }
 -                                              rsaparam = RSA_new();
 -                                              PHP_OPENSSL_RAND_ADD_TIME();
 -                                              if (rsaparam == NULL || !RSA_generate_key_ex(rsaparam, req->priv_key_bits, bne, NULL)) {
 -                                                      php_openssl_store_errors();
 -                                                      RSA_free(rsaparam);
 -                                                      rsaparam = NULL;
 -                                              }
 +                                      BIGNUM *bne = (BIGNUM *)BN_new();
 +                                      if (BN_set_word(bne, RSA_F4) != 1) {
                                                BN_free(bne);
 +                                              php_error_docref(NULL, E_WARNING, "Failed setting exponent");
 +                                              return NULL;
                                        }
 -#endif
 +                                      rsaparam = RSA_new();
 +                                      PHP_OPENSSL_RAND_ADD_TIME();
 +                                      if (rsaparam == NULL || !RSA_generate_key_ex(rsaparam, req->priv_key_bits, bne, NULL)) {
 +                                              php_openssl_store_errors();
++                                              RSA_free(rsaparam);
++                                              rsaparam = NULL;
 +                                      }
 +                                      BN_free(bne);
                                        if (rsaparam && EVP_PKEY_assign_RSA(req->priv_key, rsaparam)) {
                                                return_val = req->priv_key;
                                        } else {