diff options
author | Thomas Orozco <thomas@orozco.fr> | 2016-06-09 10:45:40 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-03-09 17:31:21 +0100 |
commit | 247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a (patch) | |
tree | d527d9e76fbe58112b32b561685202a518759c61 | |
parent | b224e7426713befd7449117afd68355231f9077e (diff) | |
download | php-git-247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a.tar.gz |
Fixed bug #71003: Add PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/pdo_mysql/mysql_driver.c | 12 | ||||
-rw-r--r-- | ext/pdo_mysql/pdo_mysql.c | 3 | ||||
-rw-r--r-- | ext/pdo_mysql/php_pdo_mysql_int.h | 3 | ||||
-rw-r--r-- | ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt | 1 |
5 files changed, 23 insertions, 0 deletions
@@ -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()) { |