summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/openssl/openssl.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index dd125602b3..cde8e952b5 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -1726,27 +1726,22 @@ static EVP_PKEY * php_openssl_evp_from_zval(zval ** val, int public_key, char *
}
} else {
/* we want the private key */
+ BIO *in;
+
if (filename) {
- BIO *in;
if (php_openssl_safe_mode_chk(filename TSRMLS_CC)) {
return NULL;
}
in = BIO_new_file(filename, "r");
- if (in == NULL) {
- return NULL;
- }
- key = PEM_read_bio_PrivateKey(in, NULL,NULL, passphrase);
- BIO_free(in);
} else {
- BIO *b = BIO_new_mem_buf(Z_STRVAL_PP(val), Z_STRLEN_PP(val));
- if (b == NULL) {
- return NULL;
- }
- key = (EVP_PKEY *) PEM_ASN1_read_bio((char *(*)())d2i_PrivateKey,
- PEM_STRING_EVP_PKEY, b,
- NULL, NULL, passphrase);
- BIO_free(b);
+ in = BIO_new_mem_buf(Z_STRVAL_PP(val), Z_STRLEN_PP(val));
+ }
+
+ if (in == NULL) {
+ return NULL;
}
+ key = PEM_read_bio_PrivateKey(in, NULL,NULL, passphrase);
+ BIO_free(in);
}
}