summaryrefslogtreecommitdiff
path: root/ext/openssl/openssl.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2016-01-31 20:18:46 -0800
committerStanislav Malyshev <stas@php.net>2016-01-31 20:18:46 -0800
commit33b1fbbb5c0459a623ab91b492f1a37c5262329c (patch)
treefe773961877ad8e3061ab4803df57b815b2bc5cd /ext/openssl/openssl.c
parentfc53d7408ba12bc0cbed8c20f3258b953c9ea9a5 (diff)
downloadphp-git-33b1fbbb5c0459a623ab91b492f1a37c5262329c.tar.gz
Fixed bug #71475: openssl_seal() uninitialized memory usage
Diffstat (limited to 'ext/openssl/openssl.c')
-rw-r--r--ext/openssl/openssl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index a8ecbb2327..75c44a3918 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -4938,6 +4938,7 @@ PHP_FUNCTION(openssl_seal)
memset(eks, 0, sizeof(*eks) * nkeys);
key_resources = safe_emalloc(nkeys, sizeof(zend_resource*), 0);
memset(key_resources, 0, sizeof(zend_resource*) * nkeys);
+ memset(pkeys, 0, sizeof(*pkeys) * nkeys);
/* get the public keys we are using to seal this data */
i = 0;
@@ -4999,7 +5000,7 @@ PHP_FUNCTION(openssl_seal)
clean_exit:
for (i=0; i<nkeys; i++) {
- if (key_resources[i] == NULL) {
+ if (key_resources[i] == NULL && pkeys[i] != NULL) {
EVP_PKEY_free(pkeys[i]);
}
if (eks[i]) {