com php-src: Fixed bug #71003: Add PDO::MYSQL_ATTR_SSL _VERIFY_SERVER_CERT: NEWS ext/pdo_mysql/mysql_d river.c ext/pdo_mysql/pdo_mysql.c ext/pdo_mysql/p hp_pdo_mysql_int.h ext/pdo_mysql/tests/pdo_mysql _class_constants.phpt
[email protected] (Nikita Popov)
| Newsgroups | php.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a Author: Thomas Orozco <[email protected]> Thu, 9 Jun 2016 10:45:40 +0200 Committer: Nikita Popov <[email protected]> Thu, 9 Mar 2017 17:31:21 +0100 Parents: b224e7426713befd7449117afd68355231f9077e Branches: PHP-7.0 PHP-7.1 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a Log: Fixed bug #71003: Add PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT Bugs: https://bugs.php.net/71003 Changed paths: M NEWS M ext/pdo_mysql/mysql_driver.c M ext/pdo_mysql/pdo_mysql.c M ext/pdo_mysql/php_pdo_mysql_int.h M ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt Diff: diff --git a/NEWS b/NEWS index 1498b60..a5fdf55 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 021ac89..1bf4eb0 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 32b85ba..99fb6d3 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 f300e04..8988412 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 f3d0fa6..fba1c24 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()) {