diff options
author | Rob Richards <rrichards@php.net> | 2011-04-15 14:24:40 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2011-04-15 14:24:40 +0000 |
commit | 944a2b0c803aa58eb4e3e3d66e248ff9ad688b66 (patch) | |
tree | 38c97d0fd48f31c4e5dff4d4574d35287b8617ee /ext/pdo_mysql/mysql_driver.c | |
parent | 50ce16deff058dfbf2a04113e4bad1548521bc64 (diff) | |
download | php-git-944a2b0c803aa58eb4e3e3d66e248ff9ad688b66.tar.gz |
Implement FR #48587 (MySQL PDO driver doesn't support SSL connections)
Diffstat (limited to 'ext/pdo_mysql/mysql_driver.c')
-rwxr-xr-x | ext/pdo_mysql/mysql_driver.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index d9718c6f83..60d9eba1dc 100755 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -597,6 +597,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ char *default_file = NULL, *default_group = NULL; long compress = 0; #endif + char *ssl_key = NULL, *ssl_cert = NULL, *ssl_ca = NULL, *ssl_capath = NULL, *ssl_cipher = NULL; H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 1 TSRMLS_CC); H->emulate_prepare = pdo_attr_lval(driver_options, @@ -681,6 +682,30 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ } } #endif + ssl_key = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_KEY, NULL TSRMLS_CC); + ssl_cert = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CERT, NULL TSRMLS_CC); + ssl_ca = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CA, NULL TSRMLS_CC); + ssl_capath = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CAPATH, NULL TSRMLS_CC); + ssl_cipher = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_SSL_CIPHER, NULL TSRMLS_CC); + + if (ssl_key || ssl_cert || ssl_ca || ssl_capath || ssl_cipher) { + mysql_ssl_set(H->server, ssl_key, ssl_cert, ssl_ca, ssl_capath, ssl_cipher); + if (ssl_key) { + efree(ssl_key); + } + if (ssl_cert) { + efree(ssl_cert); + } + if (ssl_ca) { + efree(ssl_ca); + } + if (ssl_capath) { + efree(ssl_capath); + } + if (ssl_cipher) { + efree(ssl_cipher); + } + } } #ifdef PDO_MYSQL_HAS_CHARSET |