1 --- php-5.6.17/ext/openssl/openssl.c~ 2016-01-06 16:14:47.000000000 +0100
2 +++ php-5.6.17/ext/openssl/openssl.c 2016-02-02 18:15:39.118449615 +0100
3 @@ -4886,6 +4886,7 @@ PHP_FUNCTION(openssl_seal)
4 memset(eks, 0, sizeof(*eks) * nkeys);
5 key_resources = safe_emalloc(nkeys, sizeof(long), 0);
6 memset(key_resources, 0, sizeof(*key_resources) * nkeys);
7 + memset(pkeys, 0, sizeof(*pkeys) * nkeys);
9 /* get the public keys we are using to seal this data */
10 zend_hash_internal_pointer_reset_ex(pubkeysht, &pos);
11 @@ -4958,7 +4959,7 @@ PHP_FUNCTION(openssl_seal)
14 for (i=0; i<nkeys; i++) {
15 - if (key_resources[i] == -1) {
16 + if (key_resources[i] == -1 && pkeys[i] != NULL) {
17 EVP_PKEY_free(pkeys[i]);
20 diff --git a/ext/openssl/tests/bug71475.phpt b/ext/openssl/tests/bug71475.phpt
22 index 0000000..680753d
24 +++ b/ext/openssl/tests/bug71475.phpt
27 +Bug #71475: openssl_seal() uninitialized memory usage
30 +if (!extension_loaded("openssl")) die("skip openssl not loaded");
34 +$_ = str_repeat("A", 512);
35 +openssl_seal($_, $_, $_, array_fill(0,64,0));
40 +Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s/bug71475.php on line %d
42 \ No newline at end of file