diff options
| author | Joe Watkins <krakjoe@php.net> | 2017-01-02 09:44:02 +0000 |
|---|---|---|
| committer | Joe Watkins <krakjoe@php.net> | 2017-01-02 09:44:02 +0000 |
| commit | 3e798c4a5f143ca46feab994d5f446c15aef8e98 (patch) | |
| tree | e1196b654c889dc5de45fda5c99a2d1873a4008f /ext/openssl/xp_ssl.c | |
| parent | e077735b03fd2339b2d663d29557cfb5ab2d5eff (diff) | |
| parent | 935b5cb11ed672c42b2a77e10be752702e474e7f (diff) | |
| download | php-git-3e798c4a5f143ca46feab994d5f446c15aef8e98.tar.gz | |
Merge branch 'PHP-7.0' of git.php.net:/php-src into PHP-7.0
* 'PHP-7.0' of git.php.net:/php-src: (146 commits)
Flush stderr on win32 in cli_log_message
Fixed bug #73154
FIx bug #70213
Fix dom class can't be inherited by the internal class
Another try at making concat_003 more reliable
Fix flaky openssl_pkey_new test
Make Opcache tests using the cli server more reliable
Revert "Fix #73530: Unsetting result set may reset other result set"
define php_ap_map_http_request_error function for older httpd only
add old versions of httpd support
Disable AppVeyor fast_finish
Makes the sapi web server and curl tests more reliable
Fixes the curl tests to be more reliable in Travis CI
Interpretation of curl_setopt values for boolean parameters
Fixes #65689. PDO_Firebrid / exec() does not free allocated statement.
Fix alpn_ctx leaking in openssl
Fixed bug #73373 (deflate_add does not verify that output was not truncated)
Fix IS_UNDEF comparisons in opcache
Fixed bug #73704 (phpdbg shows the wrong line in files with shebang)
Increase timing quota for small string concat test
...
Diffstat (limited to 'ext/openssl/xp_ssl.c')
| -rw-r--r-- | ext/openssl/xp_ssl.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index 208aafcd7b..f9697d0483 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -1599,8 +1599,8 @@ int php_openssl_setup_crypto(php_stream *stream, if (sslsock->is_client) { SSL_CTX_set_alpn_protos(sslsock->ctx, alpn, alpn_len); } else { - sslsock->alpn_ctx = (php_openssl_alpn_ctx *) emalloc(sizeof(php_openssl_alpn_ctx)); - sslsock->alpn_ctx->data = (unsigned char*)estrndup((const char*)alpn, alpn_len); + sslsock->alpn_ctx = (php_openssl_alpn_ctx *) pemalloc(sizeof(php_openssl_alpn_ctx), php_stream_is_persistent(stream)); + sslsock->alpn_ctx->data = (unsigned char *) pestrndup((const char*)alpn, alpn_len, php_stream_is_persistent(stream)); sslsock->alpn_ctx->len = alpn_len; SSL_CTX_set_alpn_select_cb(sslsock->ctx, server_alpn_callback, sslsock); } @@ -1632,6 +1632,13 @@ int php_openssl_setup_crypto(php_stream *stream, php_error_docref(NULL, E_WARNING, "SSL handle creation failure"); SSL_CTX_free(sslsock->ctx); sslsock->ctx = NULL; +#ifdef HAVE_TLS_ALPN + if (sslsock->alpn_ctx) { + pefree(sslsock->alpn_ctx->data, php_stream_is_persistent(stream)); + pefree(sslsock->alpn_ctx, php_stream_is_persistent(stream)); + sslsock->alpn_ctx = NULL; + } +#endif return FAILURE; } else { SSL_set_ex_data(sslsock->ssl_handle, php_openssl_get_ssl_stream_data_index(), stream); @@ -2137,6 +2144,12 @@ static int php_openssl_sockop_close(php_stream *stream, int close_handle) /* {{{ SSL_CTX_free(sslsock->ctx); sslsock->ctx = NULL; } +#ifdef HAVE_TLS_ALPN + if (sslsock->alpn_ctx) { + pefree(sslsock->alpn_ctx->data, php_stream_is_persistent(stream)); + pefree(sslsock->alpn_ctx, php_stream_is_persistent(stream)); + } +#endif #ifdef PHP_WIN32 if (sslsock->s.socket == -1) sslsock->s.socket = SOCK_ERR; |
