diff options
-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
@@ -12,6 +12,10 @@ PHP NEWS . Fixed bug #74004 (LIBXML_NOWARNING flag ingnored on loadHTML*). (somedaysummer) +- PDO MySQL: + . Fixed bug #71003 (Expose MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT to PDO + interface). (Thomas Orozco) + - SPL: . Fixed bug #74058 (ArrayObject can not notice changes). (Andrew Nester) diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index d7f0f9a64c..a716c7b1e7 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -735,6 +735,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 bf6d765aa2..92279a56c8 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 98ff513eff..fb437de348 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()) { |