summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Orozco <thomas@orozco.fr>2016-06-09 10:45:40 +0200
committerNikita Popov <nikita.ppv@gmail.com>2017-03-09 17:31:21 +0100
commit247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a (patch)
treed527d9e76fbe58112b32b561685202a518759c61
parentb224e7426713befd7449117afd68355231f9077e (diff)
downloadphp-git-247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a.tar.gz
Fixed bug #71003: Add PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
-rw-r--r--NEWS4
-rw-r--r--ext/pdo_mysql/mysql_driver.c12
-rw-r--r--ext/pdo_mysql/pdo_mysql.c3
-rw-r--r--ext/pdo_mysql/php_pdo_mysql_int.h3
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt1
5 files changed, 23 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 1498b60978..a5fdf55916 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,10 @@ PHP NEWS
. Fixed bug #74159 (Writing a large buffer to a non-blocking encrypted stream
fails with "bad write retry"). (trowski)
+- PDO MySQL:
+ . Fixed bug #71003 (Expose MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT to PDO
+ interface). (Thomas Orozco)
+
16 Mar 2017 PHP 7.0.17
- Core:
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index 021ac89b45..1bf4eb039a 100644
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -736,6 +736,18 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options)
}
}
#endif
+
+#ifdef PDO_USE_MYSQLND
+ {
+ zend_long ssl_verify_cert = pdo_attr_lval(driver_options,
+ PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT, -1);
+ if (ssl_verify_cert != -1) {
+ connect_opts |= ssl_verify_cert ?
+ CLIENT_SSL_VERIFY_SERVER_CERT:
+ CLIENT_SSL_DONT_VERIFY_SERVER_CERT;
+ }
+ }
+#endif
}
#ifdef PDO_MYSQL_HAS_CHARSET
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 32b85ba547..99fb6d3b77 100644
--- a/ext/pdo_mysql/pdo_mysql.c
+++ b/ext/pdo_mysql/pdo_mysql.c
@@ -130,6 +130,9 @@ static PHP_MINIT_FUNCTION(pdo_mysql)
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SERVER_PUBLIC_KEY", (zend_long)PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY);
#endif
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MULTI_STATEMENTS", (zend_long)PDO_MYSQL_ATTR_MULTI_STATEMENTS);
+#ifdef PDO_USE_MYSQLND
+ REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_VERIFY_SERVER_CERT", (zend_long)PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT);
+#endif
#ifdef PDO_USE_MYSQLND
mysqlnd_reverse_api_register_api(&pdo_mysql_reverse_api);
diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h
index f300e044ba..89884120ab 100644
--- a/ext/pdo_mysql/php_pdo_mysql_int.h
+++ b/ext/pdo_mysql/php_pdo_mysql_int.h
@@ -179,6 +179,9 @@ enum {
PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY,
#endif
PDO_MYSQL_ATTR_MULTI_STATEMENTS,
+#ifdef PDO_USE_MYSQLND
+ PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT,
+#endif
};
#endif
diff --git a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
index f3d0fa6313..fba1c2433e 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt
@@ -27,6 +27,7 @@ if (!extension_loaded('mysqli') && !extension_loaded('mysqlnd')) {
"MYSQL_ATTR_SSL_CIPHER" => true,
"MYSQL_ATTR_COMPRESS" => true,
"MYSQL_ATTR_MULTI_STATEMENTS" => true,
+ "MYSQL_ATTR_SSL_VERIFY_SERVER_CERT" => true,
);
if (!MySQLPDOTest::isPDOMySQLnd()) {