Commit:    263b37bee1ea92e30791b15af710b509da4b8ca8
Author:    andrey <and...@php.net>         Tue, 25 Sep 2012 18:26:02 +0200
Parents:   6074df91c6ab80a1fae7c7e8ff5be1c1db342af0
Branches:  master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=263b37bee1ea92e30791b15af710b509da4b8ca8

Log:
change public key setting to PERDIR and finish code that allows
to set the key file programatically per mysqli_options()

Changed paths:
  M  ext/mysqli/mysqli.c
  M  ext/mysqli/mysqli_api.c
  M  ext/mysqlnd/mysqlnd.c
  M  ext/mysqlnd/mysqlnd_auth.c
  M  ext/mysqlnd/mysqlnd_net.c
  M  ext/mysqlnd/php_mysqlnd.c


Diff:
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 0e7e048..9eaac24 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -699,6 +699,8 @@ PHP_MINIT_FUNCTION(mysqli)
        REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", 
MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT);
 #endif
 
+       REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", 
MYSQL_SERVER_PUBLIC_KEY, CONST_CS | CONST_PERSISTENT);
+
        /* mysqli_real_connect flags */
        REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS",CLIENT_COMPRESS, 
CONST_CS | CONST_PERSISTENT);
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 22eae7e..dbdda9b 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -1587,10 +1587,10 @@ static int mysqli_options_get_option_zval_type(int 
option)
 #endif /* MYSQLI_USE_MYSQLND */
                case MYSQL_OPT_CONNECT_TIMEOUT:
 #ifdef MYSQL_REPORT_DATA_TRUNCATION
-                case MYSQL_REPORT_DATA_TRUNCATION:
+               case MYSQL_REPORT_DATA_TRUNCATION:
 #endif
-                case MYSQL_OPT_LOCAL_INFILE:
-                case MYSQL_OPT_NAMED_PIPE:
+               case MYSQL_OPT_LOCAL_INFILE:
+               case MYSQL_OPT_NAMED_PIPE:
 #ifdef MYSQL_OPT_PROTOCOL
                 case MYSQL_OPT_PROTOCOL:
 #endif /* MySQL 4.1.0 */
@@ -1606,7 +1606,7 @@ static int mysqli_options_get_option_zval_type(int option)
                case MYSQL_OPT_RECONNECT:
 #endif /* MySQL 5.0.13 */
 #ifdef MYSQL_OPT_SSL_VERIFY_SERVER_CERT
-                case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
+               case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
 #endif /* MySQL 5.0.23 */
 #ifdef MYSQL_OPT_COMPRESS
                case MYSQL_OPT_COMPRESS:
@@ -1627,6 +1627,7 @@ static int mysqli_options_get_option_zval_type(int option)
                case MYSQL_INIT_COMMAND:
                case MYSQL_SET_CHARSET_NAME:
                case MYSQL_SET_CHARSET_DIR:
+               case MYSQL_SERVER_PUBLIC_KEY:
                        return IS_STRING;
 
                default:
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index 65f6a18..3fa9d11 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -2270,6 +2270,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, 
set_client_option)(MYSQLND_CONN_DATA * const c
                case MYSQL_OPT_CONNECT_TIMEOUT:
                case MYSQLND_OPT_NET_CMD_BUFFER_SIZE:
                case MYSQLND_OPT_NET_READ_BUFFER_SIZE:
+               case MYSQL_SERVER_PUBLIC_KEY:
                        ret = conn->net->data->m.set_client_option(conn->net, 
option, value TSRMLS_CC);
                        break;
 #ifdef MYSQLND_STRING_TO_INT_CONVERSION
diff --git a/ext/mysqlnd/mysqlnd_auth.c b/ext/mysqlnd/mysqlnd_auth.c
index d4373cf..ce03be4 100644
--- a/ext/mysqlnd/mysqlnd_auth.c
+++ b/ext/mysqlnd/mysqlnd_auth.c
@@ -488,7 +488,9 @@ mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn,
                                                                
MYSQLND_G(sha256_server_public_key);
        php_stream * stream;
        DBG_ENTER("mysqlnd_sha256_get_rsa_key");
-
+       DBG_INF_FMT("options_s256_pk=[%s] 
MYSQLND_G(sha256_server_public_key)=[%s]",
+                                net_options->sha256_server_public_key? 
net_options->sha256_server_public_key:"n/a",
+                                MYSQLND_G(sha256_server_public_key)? 
MYSQLND_G(sha256_server_public_key):"n/a");
        if (!fname || fname[0] == '\0') {
                MYSQLND_PACKET_SHA256_PK_REQUEST * pk_req_packet = NULL;
                MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE * pk_resp_packet = 
NULL;
@@ -539,6 +541,7 @@ mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn,
                DBG_RETURN(NULL);
        } else {
                char * key_str = NULL;
+               DBG_INF_FMT("Key in a file. [%s]", fname);
                stream = php_stream_open_wrapper((char *) fname, "rb", 
REPORT_ERRORS, NULL);
 
                if (stream) {
@@ -546,6 +549,7 @@ mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn,
                                BIO * bio = BIO_new_mem_buf(key_str, len);
                                ret = PEM_read_bio_RSA_PUBKEY(bio, NULL, NULL, 
NULL);
                                BIO_free(bio);
+                               DBG_INF("Successfully loaded");
                        }
                        if (key_str) {
                                DBG_INF_FMT("Public key:%*.s", len, key_str);
diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
index 7458f76..b3d9744 100644
--- a/ext/mysqlnd/mysqlnd_net.c
+++ b/ext/mysqlnd/mysqlnd_net.c
@@ -781,6 +781,15 @@ MYSQLND_METHOD(mysqlnd_net, set_client_option)(MYSQLND_NET 
* const net, enum mys
                case MYSQL_OPT_COMPRESS:
                        net->data->options.flags |= 
MYSQLND_NET_FLAG_USE_COMPRESSION;
                        break;
+               case MYSQL_SERVER_PUBLIC_KEY:
+                       {
+                               zend_bool pers = net->persistent;
+                               if 
(net->data->options.sha256_server_public_key) {
+                                       
mnd_pefree(net->data->options.sha256_server_public_key, pers);
+                               }
+                               net->data->options.sha256_server_public_key = 
value? mnd_pestrdup(value, pers) : NULL;
+                               break;
+                       }
                default:
                        DBG_RETURN(FAIL);
        }
diff --git a/ext/mysqlnd/php_mysqlnd.c b/ext/mysqlnd/php_mysqlnd.c
index f2f7ab9..9bc6b8f 100644
--- a/ext/mysqlnd/php_mysqlnd.c
+++ b/ext/mysqlnd/php_mysqlnd.c
@@ -236,7 +236,7 @@ PHP_INI_BEGIN()
        STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout",   "31536000",     
PHP_INI_SYSTEM, OnUpdateLong,   net_read_timeout, zend_mysqlnd_globals, 
mysqlnd_globals)
        STD_PHP_INI_ENTRY("mysqlnd.log_mask",                           "0",    
PHP_INI_ALL,    OnUpdateLong,   log_mask, zend_mysqlnd_globals, mysqlnd_globals)
        STD_PHP_INI_ENTRY("mysqlnd.mempool_default_size","16000",   
PHP_INI_ALL,        OnUpdateLong,   mempool_default_size,   
zend_mysqlnd_globals,           mysqlnd_globals)
-       STD_PHP_INI_ENTRY("mysqlnd.sha256_server_public_key",NULL,      
PHP_INI_SYSTEM, OnUpdateString, sha256_server_public_key, zend_mysqlnd_globals, 
mysqlnd_globals)
+       STD_PHP_INI_ENTRY("mysqlnd.sha256_server_public_key",NULL,      
PHP_INI_PERDIR, OnUpdateString, sha256_server_public_key, zend_mysqlnd_globals, 
mysqlnd_globals)
 
 #if PHP_DEBUG
        STD_PHP_INI_ENTRY("mysqlnd.debug_emalloc_fail_threshold","-1",   
PHP_INI_SYSTEM,        OnUpdateLong,   debug_emalloc_fail_threshold,   
zend_mysqlnd_globals,           mysqlnd_globals)


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to