diff options
author | Remi Collet <remi@php.net> | 2018-11-20 11:20:26 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2018-11-20 11:20:26 +0100 |
commit | 928d7fc8dfc51309303f990f5f984e40394a4a1f (patch) | |
tree | dc4d8c8817787675132fe7214d4032459a657cd1 | |
parent | 05df19b9f0bc56a002be51b53cb7d798a6bf9430 (diff) | |
parent | e7acb29eb0626dfebde7675400283d4acfe1f51a (diff) | |
download | php-git-928d7fc8dfc51309303f990f5f984e40394a4a1f.tar.gz |
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
NEWS
NEWS
Fix #77151 ftp_close(): SSL_read on shutdown
-rw-r--r-- | ext/ftp/ftp.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index 578fd3f891..4a06f3c854 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -1906,10 +1906,10 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) { done = 0; } - while (!done) { - if (data_available(ftp, fd)) { - ERR_clear_error(); - nread = SSL_read(ssl_handle, buf, sizeof(buf)); + while (!done && data_available(ftp, fd)) { + ERR_clear_error(); + nread = SSL_read(ssl_handle, buf, sizeof(buf)); + if (nread <= 0) { err = SSL_get_error(ssl_handle, nread); switch (err) { case SSL_ERROR_NONE: /* this is not an error */ @@ -1927,9 +1927,11 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) { break; default: if ((sslerror = ERR_get_error())) { - ERR_error_string_n(sslerror, buf, sizeof(buf)); + ERR_error_string_n(sslerror, buf, sizeof(buf)); + php_error_docref(NULL, E_WARNING, "SSL_read on shutdown: %s", buf); + } else if (errno) { + php_error_docref(NULL, E_WARNING, "SSL_read on shutdown: %s (%d)", strerror(errno), errno); } - php_error_docref(NULL, E_WARNING, "SSL_read on shutdown: %s (%d)", (sslerror ? buf : strerror(errno)), errno); done = 1; break; } |