]>
Commit | Line | Data |
---|---|---|
f2b22b7e AM |
1 | commit 247ce052cd0fc7d0d8ea1a0e7ea2075e9601766a |
2 | Author: Thomas Orozco <thomas@orozco.fr> | |
3 | Date: Thu Jun 9 10:45:40 2016 +0200 | |
4 | ||
5 | Fixed bug #71003: Add PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT | |
6 | ||
7 | diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c | |
8 | index 021ac89b45..1bf4eb039a 100644 | |
9 | --- a/ext/pdo_mysql/mysql_driver.c | |
10 | +++ b/ext/pdo_mysql/mysql_driver.c | |
11 | @@ -736,6 +736,18 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options) | |
12 | } | |
13 | } | |
14 | #endif | |
15 | + | |
16 | +#ifdef PDO_USE_MYSQLND | |
17 | + { | |
18 | + long ssl_verify_cert = pdo_attr_lval(driver_options, | |
19 | + PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT, -1); | |
20 | + if (ssl_verify_cert != -1) { | |
21 | + connect_opts |= ssl_verify_cert ? | |
22 | + CLIENT_SSL_VERIFY_SERVER_CERT: | |
23 | + CLIENT_SSL_DONT_VERIFY_SERVER_CERT; | |
24 | + } | |
25 | + } | |
26 | +#endif | |
27 | } | |
28 | ||
29 | #ifdef PDO_MYSQL_HAS_CHARSET | |
30 | diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c | |
31 | index 32b85ba547..99fb6d3b77 100644 | |
32 | --- a/ext/pdo_mysql/pdo_mysql.c | |
33 | +++ b/ext/pdo_mysql/pdo_mysql.c | |
34 | @@ -128,6 +128,9 @@ static PHP_MINIT_FUNCTION(pdo_mysql) | |
35 | REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SERVER_PUBLIC_KEY", (long)PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY); | |
36 | #endif | |
37 | REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MULTI_STATEMENTS", (long)PDO_MYSQL_ATTR_MULTI_STATEMENTS); | |
38 | +#ifdef PDO_USE_MYSQLND | |
39 | + REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_VERIFY_SERVER_CERT", (long)PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT); | |
40 | +#endif | |
41 | ||
42 | #ifdef PDO_USE_MYSQLND | |
43 | mysqlnd_reverse_api_register_api(&pdo_mysql_reverse_api TSRMLS_CC); | |
44 | diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h | |
45 | index f300e044ba..89884120ab 100644 | |
46 | --- a/ext/pdo_mysql/php_pdo_mysql_int.h | |
47 | +++ b/ext/pdo_mysql/php_pdo_mysql_int.h | |
48 | @@ -179,6 +179,9 @@ enum { | |
49 | PDO_MYSQL_ATTR_SERVER_PUBLIC_KEY, | |
50 | #endif | |
51 | PDO_MYSQL_ATTR_MULTI_STATEMENTS, | |
52 | +#ifdef PDO_USE_MYSQLND | |
53 | + PDO_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT, | |
54 | +#endif | |
55 | }; | |
56 | ||
57 | #endif | |
58 | diff --git a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt | |
59 | index f3d0fa6313..fba1c2433e 100644 | |
60 | --- a/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt | |
61 | +++ b/ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt | |
62 | @@ -27,6 +27,7 @@ if (!extension_loaded('mysqli') && !extension_loaded('mysqlnd')) { | |
63 | "MYSQL_ATTR_SSL_CIPHER" => true, | |
64 | "MYSQL_ATTR_COMPRESS" => true, | |
65 | "MYSQL_ATTR_MULTI_STATEMENTS" => true, | |
66 | + "MYSQL_ATTR_SSL_VERIFY_SERVER_CERT" => true, | |
67 | ); | |
68 | ||
69 | if (!MySQLPDOTest::isPDOMySQLnd()) { |