[packages/php/PHP_5_6] - rel 5; use upstream solution (disable ssl certs verification for mysql connections by default; int
arekm
arekm at pld-linux.org
Mon Oct 26 08:30:34 CET 2015
commit a0d270c5f0addabfd67cb8dc355324024bc99331
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Mon Oct 26 08:30:25 2015 +0100
- rel 5; use upstream solution (disable ssl certs verification for mysql connections by default; introduce MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT option for turning it on
php-mysql-ssl-context.patch | 170 ++++++++++++++++++++++++++++++++++++--------
php.spec | 2 +-
2 files changed, 141 insertions(+), 31 deletions(-)
---
diff --git a/php.spec b/php.spec
index da3e475..c439dcd 100644
--- a/php.spec
+++ b/php.spec
@@ -153,7 +153,7 @@ ERROR: You need to select at least one Apache SAPI to build shared modules.
%undefine with_filter
%endif
-%define rel 4
+%define rel 5
%define orgname php
%define ver_suffix 56
%define php_suffix %{!?with_default_php:%{ver_suffix}}
diff --git a/php-mysql-ssl-context.patch b/php-mysql-ssl-context.patch
index c8ff48d..1513e92 100644
--- a/php-mysql-ssl-context.patch
+++ b/php-mysql-ssl-context.patch
@@ -1,36 +1,146 @@
-; obey default context options
-; https://bugs.php.net/bug.php?id=68344
-diff -urbB php-5.6.12/ext/mysqlnd/mysqlnd_net.c php-5.6.12/ext/mysqlnd/mysqlnd_net.c
---- php-5.6.12/ext/mysqlnd/mysqlnd_net.c 2015-08-06 09:55:57.000000000 +0200
-+++ php-5.6.12/ext/mysqlnd/mysqlnd_net.c 2015-08-10 13:25:30.187912101 +0200
-@@ -29,6 +29,7 @@
- #include "mysqlnd_ext_plugin.h"
- #include "php_network.h"
- #include "zend_ini.h"
-+#include "ext/standard/file.h"
- #ifdef MYSQLND_COMPRESSION_ENABLED
- #include <zlib.h>
- #endif
-@@ -868,6 +868,21 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(
- DBG_RETURN(FAIL);
+commit 8292260515a904b4d515484145c78f33a06ae1ae
+Author: Andrey Hristov <andrey at php.net>
+Date: Wed Oct 21 15:10:24 2015 +0200
+
+ Fix for Bug #68344 MySQLi does not provide way to disable peer certificate validation
+
+diff --git a/ext/mysqli/tests/bug51647.phpt b/ext/mysqli/tests/bug51647.phpt
+index 78540f1..349d6db 100644
+--- a/ext/mysqli/tests/bug51647.phpt
++++ b/ext/mysqli/tests/bug51647.phpt
+@@ -65,9 +65,43 @@ $link->close();
+ } else {
+ if (!$row = $res->fetch_assoc())
+ printf("[006] [%d] %s\n", $link->errno, $link->error);
++ if (!strlen($row["Value"]))
++ printf("[007] Empty cipher. No encrytion!");
}
-+ if (FG(default_context)) {
-+ zval **tmpzval = NULL;
-+ int i = 0;
-+ /* copy values from default stream settings */
-+ char *opts[] = { "allow_self_signed", "cafile", "capath", "ciphers", "CN_match",
-+ "disable_compression", "local_cert", "local_pk", "no_ticket", "passphrase",
-+ "peer_fingerprint", "peer_name", "SNI_enabled", "SNI_server_certs", "SNI_server_name",
-+ "verify_depth", "verify_peer", "verify_peer_name", NULL };
-+ while (opts[i]) {
-+ if (php_stream_context_get_option(FG(default_context), "ssl", opts[i], &tmpzval) == SUCCESS)
-+ php_stream_context_set_option(context, "ssl", opts[i], *tmpzval);
-+ i++;
+ var_dump($row);
++ $link->close();
++
++ if (!is_object($link = mysqli_init()))
++ printf("[008] Cannot create link\n");
++
++ if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, MYSQLI_CLIENT_SSL)) {
++ printf("[009] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
++ }
++
++ if (!$res = $link->query('SHOW STATUS like "Ssl_cipher"')) {
++ if (1064 == $link->errno) {
++ /* ERROR 1064 (42000): You have an error in your SQL syntax; = sql strict mode */
++ if ($res = $link->query("SHOW STATUS")) {
++ while ($row = $res->fetch_assoc())
++ if ($row['Variable_name'] == 'Ssl_cipher')
++ break;
++ } else {
++ printf("[010] [%d] %s\n", $link->errno, $link->error);
++ }
++ } else {
++ printf("[011] [%d] %s\n", $link->errno, $link->error);
+ }
++ } else {
++ if (!$row = $res->fetch_assoc())
++ printf("[012] [%d] %s\n", $link->errno, $link->error);
++ if (!strlen($row["Value"]))
++ printf("[013] Empty cipher. No encrytion!");
+ }
+
- if (net->data->options.ssl_key) {
- zval key_zval;
- ZVAL_STRING(&key_zval, net->data->options.ssl_key, 0);
++ var_dump($row);
++
++ $link->close();
+
+ print "done!";
+ ?>
+@@ -78,4 +112,10 @@ array(2) {
+ ["Value"]=>
+ string(%d) "%S"
+ }
++array(2) {
++ ["Variable_name"]=>
++ string(10) "Ssl_cipher"
++ ["Value"]=>
++ string(%d) "%S"
++}
+ done!
+diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
+index 69f4b7a..4cbe9de 100644
+--- a/ext/mysqlnd/mysqlnd_net.c
++++ b/ext/mysqlnd/mysqlnd_net.c
+@@ -901,6 +901,12 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
+ zval verify_peer_zval;
+ ZVAL_TRUE(&verify_peer_zval);
+ php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval);
++ php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval);
++ } else {
++ zval verify_peer_zval;
++ ZVAL_FALSE(&verify_peer_zval);
++ php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval);
++ php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval);
+ }
+ if (net->data->options.ssl_cert) {
+ zval cert_zval;
+@@ -918,7 +924,7 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
+ if (net->data->options.ssl_capath) {
+ zval capath_zval;
+ ZVAL_STRING(&capath_zval, net->data->options.ssl_capath, 0);
+- php_stream_context_set_option(context, "ssl", "cafile", &capath_zval);
++ php_stream_context_set_option(context, "ssl", "capath", &capath_zval);
+ }
+ if (net->data->options.ssl_passphrase) {
+ zval passphrase_zval;
+commit afd31489d0d9999f701467e99ef2b40794eed196
+Author: Andrey Hristov <andrey at php.net>
+Date: Thu Oct 22 11:48:53 2015 +0200
+
+ Improve fix for Bug #68344 MySQLi does not provide way to disable peer certificate validation
+diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
+index e028d60..198ed83 100644
+--- a/ext/mysqli/mysqli.c
++++ b/ext/mysqli/mysqli.c
+@@ -715,6 +715,9 @@ PHP_MINIT_FUNCTION(mysqli)
+ REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT);
++#ifdef CLIENT_SSL_VERIFY_SERVER_CERT
++ REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
++#endif
+ #if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND)
+ REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT);
+diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt
+index dd0f769..1cb31cc 100644
+--- a/ext/mysqli/tests/mysqli_constants.phpt
++++ b/ext/mysqli/tests/mysqli_constants.phpt
+@@ -136,6 +136,9 @@ require_once('skipifconnectfailure.inc');
+ $expected_constants['MYSQLI_SERVER_QUERY_WAS_SLOW'] = true;
+ }
+
++ if ($version >= 50033 || $IS_MYSQLND) {
++ $expected_constants['MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT'] = true;
++ }
+
+ /* First introduced in MySQL 6.0, backported to MySQL 5.5 */
+ if ($version >= 50606 || $IS_MYSQLND) {
+diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
+index 4cbe9de..7b164ac 100644
+--- a/ext/mysqlnd/mysqlnd_net.c
++++ b/ext/mysqlnd/mysqlnd_net.c
+@@ -897,14 +897,9 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
+ ZVAL_STRING(&key_zval, net->data->options.ssl_key, 0);
+ php_stream_context_set_option(context, "ssl", "local_pk", &key_zval);
+ }
+- if (net->data->options.ssl_verify_peer) {
+- zval verify_peer_zval;
+- ZVAL_TRUE(&verify_peer_zval);
+- php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval);
+- php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval);
+- } else {
++ {
+ zval verify_peer_zval;
+- ZVAL_FALSE(&verify_peer_zval);
++ ZVAL_BOOL(&verify_peer_zval, net->data->options.ssl_verify_peer);
+ php_stream_context_set_option(context, "ssl", "verify_peer", &verify_peer_zval);
+ php_stream_context_set_option(context, "ssl", "verify_peer_name", &verify_peer_zval);
+ }
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/php.git/commitdiff/a0d270c5f0addabfd67cb8dc355324024bc99331
More information about the pld-cvs-commit
mailing list