nlopess Tue Feb 13 18:29:10 2007 UTC
Added files: (Branch: PHP_5_2)
/php-src/ext/ftp/tests bug37799.phpt
Modified files:
/php-src NEWS
/php-src/ext/ftp ftp.c
/php-src/ext/ftp/tests server.inc
Log:
Fixed bug #37799 (ftp_ssl_connect() falls back to non-ssl connection)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.535&r2=1.2027.2.547.2.536&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.535 php-src/NEWS:1.2027.2.547.2.536
--- php-src/NEWS:1.2027.2.547.2.535 Tue Feb 13 15:55:45 2007
+++ php-src/NEWS Tue Feb 13 18:29:10 2007
@@ -16,6 +16,7 @@
- Fixed bug #40410 (ext/posix does not compile on MacOS 10.3.9). (Tony)
- Fixed bug #40109 (iptcembed fails on non-jfif jpegs). (Tony)
- Fixed bug #39836 (SplObjectStorage empty after unserialize). (Marcus)
+- Fixed bug #37799 (ftp_ssl_connect() falls back to non-ssl connection). (Nuno)
08 Feb 2007, PHP 5.2.1
- Added read-timeout context option "timeout" for HTTP streams. (Hannes,
Ilia).
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/ftp.c?r1=1.112.2.4.2.3&r2=1.112.2.4.2.4&diff_format=u
Index: php-src/ext/ftp/ftp.c
diff -u php-src/ext/ftp/ftp.c:1.112.2.4.2.3 php-src/ext/ftp/ftp.c:1.112.2.4.2.4
--- php-src/ext/ftp/ftp.c:1.112.2.4.2.3 Mon Jan 1 09:36:01 2007
+++ php-src/ext/ftp/ftp.c Tue Feb 13 18:29:10 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ftp.c,v 1.112.2.4.2.3 2007/01/01 09:36:01 sebastian Exp $ */
+/* $Id: ftp.c,v 1.112.2.4.2.4 2007/02/13 18:29:10 nlopess Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -266,60 +266,57 @@
}
if (ftp->resp != 334) {
- ftp->use_ssl = 0;
+ return 0;
} else {
ftp->old_ssl = 1;
ftp->use_ssl_for_data = 1;
}
}
- /* now enable ssl if we still need to */
- if (ftp->use_ssl) {
- ctx = SSL_CTX_new(SSLv23_client_method());
- if (ctx == NULL) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING,
"failed to create the SSL context");
+ ctx = SSL_CTX_new(SSLv23_client_method());
+ if (ctx == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to
create the SSL context");
+ return 0;
+ }
+
+ SSL_CTX_set_options(ctx, SSL_OP_ALL);
+
+ ftp->ssl_handle = SSL_new(ctx);
+ if (ftp->ssl_handle == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to
create the SSL handle");
+ SSL_CTX_free(ctx);
+ return 0;
+ }
+
+ SSL_set_fd(ftp->ssl_handle, ftp->fd);
+
+ if (SSL_connect(ftp->ssl_handle) <= 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL/TLS
handshake failed");
+ SSL_shutdown(ftp->ssl_handle);
+ return 0;
+ }
+
+ ftp->ssl_active = 1;
+
+ if (!ftp->old_ssl) {
+
+ /* set protection buffersize to zero */
+ if (!ftp_putcmd(ftp, "PBSZ", "0")) {
+ return 0;
+ }
+ if (!ftp_getresp(ftp)) {
return 0;
}
- SSL_CTX_set_options(ctx, SSL_OP_ALL);
-
- ftp->ssl_handle = SSL_new(ctx);
- if (ftp->ssl_handle == NULL) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING,
"failed to create the SSL handle");
- SSL_CTX_free(ctx);
+ /* enable data conn encryption */
+ if (!ftp_putcmd(ftp, "PROT", "P")) {
return 0;
}
-
- SSL_set_fd(ftp->ssl_handle, ftp->fd);
-
- if (SSL_connect(ftp->ssl_handle) <= 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING,
"SSL/TLS handshake failed");
- SSL_shutdown(ftp->ssl_handle);
+ if (!ftp_getresp(ftp)) {
return 0;
}
- ftp->ssl_active = 1;
-
- if (!ftp->old_ssl) {
-
- /* set protection buffersize to zero */
- if (!ftp_putcmd(ftp, "PBSZ", "0")) {
- return 0;
- }
- if (!ftp_getresp(ftp)) {
- return 0;
- }
-
- /* enable data conn encryption */
- if (!ftp_putcmd(ftp, "PROT", "P")) {
- return 0;
- }
- if (!ftp_getresp(ftp)) {
- return 0;
- }
-
- ftp->use_ssl_for_data = (ftp->resp >= 200 &&
ftp->resp <=299);
- }
+ ftp->use_ssl_for_data = (ftp->resp >= 200 && ftp->resp
<=299);
}
}
#endif
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/server.inc?r1=1.1.2.6&r2=1.1.2.7&diff_format=u
Index: php-src/ext/ftp/tests/server.inc
diff -u php-src/ext/ftp/tests/server.inc:1.1.2.6
php-src/ext/ftp/tests/server.inc:1.1.2.7
--- php-src/ext/ftp/tests/server.inc:1.1.2.6 Fri Dec 1 16:37:39 2006
+++ php-src/ext/ftp/tests/server.inc Tue Feb 13 18:29:10 2007
@@ -59,7 +59,7 @@
function user_auth($buf) {
- global $user, $s, $ssl;
+ global $user, $s, $ssl, $bug37799;
if (!empty($ssl)) {
if ($buf !== "AUTH TLS\r\n") {
@@ -67,7 +67,13 @@
dump_and_exit($buf);
}
- fputs($s, "234 auth type accepted\r\n");
+ if (empty($bug37799)) {
+ fputs($s, "234 auth type accepted\r\n");
+ } else {
+ fputs($s, "666 dummy\r\n");
+ fputs($s, "666 bogus msg\r\n");
+ exit;
+ }
if (!stream_socket_enable_crypto($s, true,
STREAM_CRYPTO_METHOD_SSLv23_SERVER)) {
die("SSLv23 handshake failed.\n");
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/bug37799.phpt?view=markup&rev=1.1
Index: php-src/ext/ftp/tests/bug37799.phpt
+++ php-src/ext/ftp/tests/bug37799.phpt
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php