summaryrefslogtreecommitdiff
path: root/crypto/apr_crypto_openssl.c
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2021-09-12 11:54:40 +0000
committerYann Ylavic <ylavic@apache.org>2021-09-12 11:54:40 +0000
commit6fbacef78f7eaa53d8e709af5a2c3e7a92a364a0 (patch)
tree5ee63634dc08d3cf23d585df10c7e2714d6d3e6f /crypto/apr_crypto_openssl.c
parent6e6613787d3a8cc24f60a758f7b29f28292ae488 (diff)
downloadapr-6fbacef78f7eaa53d8e709af5a2c3e7a92a364a0.tar.gz
apr_crypto: cprng_stream_ctx_make() to return NULL *ctx on failure.
apr_crypto_prng_create() relies on cprng_stream_ctx_make() to not set a freed/dangling cprng->ctx on failure when given NULL. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1893270 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'crypto/apr_crypto_openssl.c')
-rw-r--r--crypto/apr_crypto_openssl.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/crypto/apr_crypto_openssl.c b/crypto/apr_crypto_openssl.c
index 753a7820c..e2fa38b61 100644
--- a/crypto/apr_crypto_openssl.c
+++ b/crypto/apr_crypto_openssl.c
@@ -1555,11 +1555,13 @@ static apr_status_t cprng_stream_ctx_make(cprng_stream_ctx_t **psctx,
EVP_CIPHER_CTX *ctx;
const EVP_CIPHER *ecipher;
+ *psctx = NULL;
+
if (pool) {
- *psctx = sctx = apr_palloc(pool, sizeof(cprng_stream_ctx_t));
+ sctx = apr_palloc(pool, sizeof(cprng_stream_ctx_t));
}
else {
- *psctx = sctx = malloc(sizeof(cprng_stream_ctx_t));
+ sctx = malloc(sizeof(cprng_stream_ctx_t));
}
if (!sctx) {
return APR_ENOMEM;
@@ -1619,6 +1621,7 @@ static apr_status_t cprng_stream_ctx_make(cprng_stream_ctx_t **psctx,
return APR_ENOMEM;
}
+ *psctx = sctx;
return APR_SUCCESS;
}