summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2018-11-20 11:20:26 +0100
committerRemi Collet <remi@php.net>2018-11-20 11:20:26 +0100
commit928d7fc8dfc51309303f990f5f984e40394a4a1f (patch)
treedc4d8c8817787675132fe7214d4032459a657cd1
parent05df19b9f0bc56a002be51b53cb7d798a6bf9430 (diff)
parente7acb29eb0626dfebde7675400283d4acfe1f51a (diff)
downloadphp-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.c14
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;
}