[PHP-CVS] com php-src: Fixed compilator bug that might cause jump depended on unitialized value: Zend/zend_compile.c Zend/zend_language_parser.y
Commit:d4650c5d69ffb49d476a2969c6200879bd424caf Author:Dmitry Stogov dmi...@zend.com Wed, 9 Jan 2013 17:16:47 +0400 Parents: c05ee74e7ff28b49018bf3e8f452bfd5386d1b68 Branches: PHP-5.3 PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d4650c5d69ffb49d476a2969c6200879bd424caf Log: Fixed compilator bug that might cause jump depended on unitialized value Changed paths: M Zend/zend_compile.c M Zend/zend_language_parser.y Diff: diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index e395795..8382b48 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3414,6 +3414,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name /* Prefix class name with name of current namespace */ znode tmp; + tmp.op_type = IS_CONST; tmp.u.constant = *CG(current_namespace); zval_copy_ctor(tmp.u.constant); zend_do_build_namespace_name(tmp, tmp, class_name TSRMLS_CC); @@ -3529,7 +3530,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode *parent ce-line_end = zend_get_compiled_lineno(TSRMLS_C); if (!(ce-ce_flags (ZEND_ACC_INTERFACE|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) -((parent_token-op_type != IS_UNUSED) || (ce-num_interfaces 0))) { +(parent_token || (ce-num_interfaces 0))) { zend_verify_abstract_class(ce TSRMLS_CC); if (ce-num_interfaces) { do_verify_abstract_class(TSRMLS_C); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 2533f60..d24fc9c 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -316,13 +316,13 @@ unticked_class_declaration_statement: implements_list '{' class_statement_list - '}' { zend_do_end_class_declaration($1, $2 TSRMLS_CC); } + '}' { zend_do_end_class_declaration($1, $3 TSRMLS_CC); } | interface_entry T_STRING { zend_do_begin_class_declaration($1, $2, NULL TSRMLS_CC); } interface_extends_list '{' class_statement_list - '}' { zend_do_end_class_declaration($1, $2 TSRMLS_CC); } + '}' { zend_do_end_class_declaration($1, NULL TSRMLS_CC); } ; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.3' into PHP-5.4: Zend/zend_compile.c Zend/zend_language_parser.y
Commit:625000ab442dd4c1bfc6975a4a979f2c5f60a78d Author:Dmitry Stogov dmi...@zend.com Wed, 9 Jan 2013 17:36:44 +0400 Parents: f9e8678dd3a41ed8a100d8201153a41d6fd25f2e d4650c5d69ffb49d476a2969c6200879bd424caf Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=625000ab442dd4c1bfc6975a4a979f2c5f60a78d Log: Merge branch 'PHP-5.3' into PHP-5.4 * PHP-5.3: Fixed compilator bug that might cause jump depended on unitialized value Changed paths: MM Zend/zend_compile.c MM Zend/zend_language_parser.y Diff: diff --cc Zend/zend_compile.c index 9acdc5b,8382b48..8f4f9c4 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@@ -4912,28 -3527,12 +4913,28 @@@ void zend_do_end_class_declaration(cons } } - ce-line_end = zend_get_compiled_lineno(TSRMLS_C); + ce-info.user.line_end = zend_get_compiled_lineno(TSRMLS_C); + + /* Check for traits and proceed like with interfaces. + * The only difference will be a combined handling of them in the end. + * Thus, we need another opcode here. */ + if (ce-num_traits 0) { + zend_op *opline; + + ce-traits = NULL; + ce-num_traits = 0; + ce-ce_flags |= ZEND_ACC_IMPLEMENT_TRAITS; + + /* opcode generation: */ + opline = get_next_op(CG(active_op_array) TSRMLS_CC); + opline-opcode = ZEND_BIND_TRAITS; + SET_NODE(opline-op1, CG(implementing_class)); + } if (!(ce-ce_flags (ZEND_ACC_INTERFACE|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) -((parent_token-op_type != IS_UNUSED) || (ce-num_interfaces 0))) { +(parent_token || (ce-num_interfaces 0))) { zend_verify_abstract_class(ce TSRMLS_CC); - if (ce-num_interfaces) { + if (ce-num_interfaces !(ce-ce_flags ZEND_ACC_IMPLEMENT_TRAITS)) { do_verify_abstract_class(TSRMLS_C); } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.4' into PHP-5.5: Zend/zend_compile.c Zend/zend_language_parser.y
Commit:c3ebd6305ec4325827b7c4b9adc322820e124b26 Author:Dmitry Stogov dmi...@zend.com Wed, 9 Jan 2013 17:52:48 +0400 Parents: 326f896739785cfcd36ef918dbd399ac605f6552 625000ab442dd4c1bfc6975a4a979f2c5f60a78d Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c3ebd6305ec4325827b7c4b9adc322820e124b26 Log: Merge branch 'PHP-5.4' into PHP-5.5 * PHP-5.4: Fixed compilator bug that might cause jump depended on unitialized value Changed paths: MM Zend/zend_compile.c MM Zend/zend_language_parser.y Diff: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Add new constants: ext/mysqlnd/mysqlnd_enum_n_def.h
Commit:b8a369f522511109583cab276ee0d31bbb3f677a Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 14:50:43 +0100 Parents: 326f896739785cfcd36ef918dbd399ac605f6552 Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b8a369f522511109583cab276ee0d31bbb3f677a Log: Add new constants Changed paths: M ext/mysqlnd/mysqlnd_enum_n_def.h Diff: diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 3c50c2a..7dd4d0f 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -97,7 +97,9 @@ #define CLIENT_MULTI_RESULTS (1UL 17) /* Enable/disable multi-results */ #define CLIENT_PS_MULTI_RESULTS(1UL 18) /* Multi-results in PS-protocol */ #define CLIENT_PLUGIN_AUTH (1UL 19) /* Client supports plugin authentication */ - +#define CLIENT_CONNECT_ATTRS (1UL 20) /* Client supports connection attributes */ +#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL 21) /* Enable authentication response packet to be larger than 255 bytes. */ +#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS(1UL 22) /* Don't close the connection for a connection with expired password. */ #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL 30) #define MYSQLND_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_TRANSACTIONS | \ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] com php-src: Fixed bug #63882 (zend_std_compare_objects crash on recursion): NEWS Zend/tests/bug63882.phpt Zend/zend_object_handlers.c Zend/zend_objects_API.c Zend/zend_objects_API.h
Hi! Doesn't change of zend_objects_API.h change binary API? I'm not sure we can do it in 5.4. On 1/8/13 11:30 PM, Dmitry Stogov wrote: Commit:f9e8678dd3a41ed8a100d8201153a41d6fd25f2e Author:Dmitry Stogov dmi...@zend.com Wed, 9 Jan 2013 11:30:50 +0400 Parents: f3b1b8516906fe900e521216c8f01e362790af30 Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f9e8678dd3a41ed8a100d8201153a41d6fd25f2e Log: Fixed bug #63882 (zend_std_compare_objects crash on recursion) Bugs: https://bugs.php.net/63882 Changed paths: M NEWS A Zend/tests/bug63882.phpt M Zend/zend_object_handlers.c M Zend/zend_objects_API.c M Zend/zend_objects_API.h Diff: diff --git a/NEWS b/NEWS index 1abd398..cfc0fa9 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ PHP NEWS - Core: . Fixed bug #63943 (Bad warning text from strpos() on empty needle). (Laruence) + . Fixed bug #63882 (zend_std_compare_objects crash on recursion). (Dmitry) - Litespeed: . Fixed bug #63228 (-Werror=format-security error in lsapi code). (George) diff --git a/Zend/tests/bug63882.phpt b/Zend/tests/bug63882.phpt new file mode 100644 index 000..0cc1bab --- /dev/null +++ b/Zend/tests/bug63882.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #63882 (zend_std_compare_objects crash on recursion) +--FILE-- +?php +class Test { public $x = 5; } + +$testobj1 = new Test; +$testobj2 = new Test; +$testobj1-x = $testobj1; +$testobj2-x = $testobj2; + +var_dump($testobj1 == $testobj2); +? +--EXPECTF-- +Fatal error: Nesting level too deep - recursive dependency? in %sbug63882.php on line 9 diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index a76dfb3..3881c0e 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -35,6 +35,17 @@ #define Z_OBJ_P(zval_p) \ ((zend_object*)(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(zval_p)].bucket.obj.object)) +#define Z_OBJ_PROTECT_RECURSION(zval_p) \ + do { \ + if (EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(zval_p)].apply_count++ = 3) { \ + zend_error(E_ERROR, Nesting level too deep - recursive dependency?); \ + } \ + } while (0) + + +#define Z_OBJ_UNPROTECT_RECURSION(zval_p) \ + EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(zval_p)].apply_count-- + /* __X accessors explanation: @@ -1319,28 +1330,43 @@ static int zend_std_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{{ */ } if (!zobj1-properties !zobj2-properties) { int i; + + Z_OBJ_PROTECT_RECURSION(o1); + Z_OBJ_PROTECT_RECURSION(o2); for (i = 0; i zobj1-ce-default_properties_count; i++) { if (zobj1-properties_table[i]) { if (zobj2-properties_table[i]) { zval result; if (compare_function(result, zobj1-properties_table[i], zobj2-properties_table[i] TSRMLS_CC)==FAILURE) { + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return 1; } if (Z_LVAL(result) != 0) { + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return Z_LVAL(result); } } else { + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return 1; } } else { if (zobj2-properties_table[i]) { + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return 1; } else { + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return 0; } } } + Z_OBJ_UNPROTECT_RECURSION(o1); + Z_OBJ_UNPROTECT_RECURSION(o2); return 0; } else { if (!zobj1-properties) { diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 4f3561e..1fe5d0c 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -117,6 +117,7
[PHP-CVS] com php-src: fix compilation error after merge: ext/mysqlnd/mysqlnd.c
Commit:bcd278ad7f3a8e549a3281600decd897dd7d73ce Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:39:59 +0100 Parents: 6a6ec195acb0a67b8728dd32fad5c82b37b31192 Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=bcd278ad7f3a8e549a3281600decd897dd7d73ce Log: fix compilation error after merge Changed paths: M ext/mysqlnd/mysqlnd.c Diff: diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 3483d86..db0a111 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -774,7 +774,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn, /* we allow load data local infile by default */ mysql_flags |= MYSQLND_CAPABILITIES; - mysql_flags |= conn-options.flags; /* use the flags from set_client_option() */ + mysql_flags |= conn-options-flags; /* use the flags from set_client_option() */ if (db) { mysql_flags |= CLIENT_CONNECT_WITH_DB; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.3' into PHP-5.4: ext/mysqlnd/mysqlnd.c
Commit:6a6ec195acb0a67b8728dd32fad5c82b37b31192 Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:27:50 +0100 Parents: 625000ab442dd4c1bfc6975a4a979f2c5f60a78d 12e759c2eaafbf85ef8595e4c2ed0711a25091ef Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=6a6ec195acb0a67b8728dd32fad5c82b37b31192 Log: Merge branch 'PHP-5.3' into PHP-5.4 Changed paths: MM ext/mysqlnd/mysqlnd.c Diff: diff --cc ext/mysqlnd/mysqlnd.c index 9e40846,20bab91..3483d86 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@@ -772,8 -688,11 +772,10 @@@ MYSQLND_METHOD(mysqlnd_conn_data, conne goto err; } /* we allow load data local infile by default */ - mysql_flags |= CLIENT_LOCAL_FILES | CLIENT_PS_MULTI_RESULTS; mysql_flags |= MYSQLND_CAPABILITIES; + mysql_flags |= conn-options.flags; /* use the flags from set_client_option() */ + if (db) { mysql_flags |= CLIENT_CONNECT_WITH_DB; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.4' into PHP-5.5: ext/mysqlnd/mysqlnd.c
Commit:1f7f8429af67cd362ed1dc5ee81bcf518e9d44be Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:40:57 +0100 Parents: cb6071ef54779e392cf50831399dfd66939de9a0 bcd278ad7f3a8e549a3281600decd897dd7d73ce Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1f7f8429af67cd362ed1dc5ee81bcf518e9d44be Log: Merge branch 'PHP-5.4' into PHP-5.5 Conflicts: ext/mysqlnd/mysqlnd.c Changed paths: MM ext/mysqlnd/mysqlnd.c diff --cc ext/mysqlnd/mysqlnd.c index db1b901,db0a111..ebc4a77 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@@ -657,162 -491,116 +657,162 @@@ mysqlnd_connect_run_authentication ret = mysqlnd_switch_to_ssl_if_needed(conn, greet_packet, options, mysql_flags TSRMLS_CC); if (PASS == ret) { - zend_bool first_call = TRUE; + ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, db_len, + greet_packet-auth_plugin_data, greet_packet-auth_plugin_data_len, greet_packet-auth_protocol, + greet_packet-charset_no, options, mysql_flags, FALSE /*silent*/, FALSE/*is_change*/ TSRMLS_CC); + } + DBG_RETURN(ret); +} +/* }}} */ - char * switch_to_auth_protocol = NULL; - size_t switch_to_auth_protocol_len = 0; - char * requested_protocol = NULL; - zend_uchar * plugin_data; - size_t plugin_data_len; - plugin_data_len = greet_packet-auth_plugin_data_len; - plugin_data = mnd_emalloc(plugin_data_len + 1); - if (!plugin_data) { - ret = FAIL; - goto end; - } - memcpy(plugin_data, greet_packet-auth_plugin_data, plugin_data_len); - plugin_data[plugin_data_len] = '\0'; +/* {{{ mysqlnd_conn_data::execute_init_commands */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * conn TSRMLS_DC) +{ + enum_func_status ret = PASS; - requested_protocol = mnd_pestrdup(greet_packet-auth_protocol? greet_packet-auth_protocol: mysql_native_password, FALSE); - if (!requested_protocol) { - ret = FAIL; - goto end; + DBG_ENTER(mysqlnd_conn_data::execute_init_commands); + if (conn-options-init_commands) { + unsigned int current_command = 0; + for (; current_command conn-options-num_commands; ++current_command) { + const char * const command = conn-options-init_commands[current_command]; + if (command) { + MYSQLND_INC_CONN_STATISTIC(conn-stats, STAT_INIT_COMMAND_EXECUTED_COUNT); + if (PASS != conn-m-query(conn, command, strlen(command) TSRMLS_CC)) { + MYSQLND_INC_CONN_STATISTIC(conn-stats, STAT_INIT_COMMAND_FAILED_COUNT); + ret = FAIL; + break; + } + if (conn-last_query_type == QUERY_SELECT) { + MYSQLND_RES * result = conn-m-use_result(conn TSRMLS_CC); + if (result) { + result-m.free_result(result, TRUE TSRMLS_CC); + } + } + } } + } + DBG_RETURN(ret); +} +/* }}} */ - do { - struct st_mysqlnd_authentication_plugin * auth_plugin; - { - char * plugin_name = NULL; - mnd_sprintf(plugin_name, 0, auth_plugin_%s, requested_protocol); +/* {{{ mysqlnd_conn_data::get_updated_connect_flags */ +static unsigned int +MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags TSRMLS_DC) +{ + MYSQLND_NET * net = conn-net; - DBG_INF_FMT(looking for %s auth plugin, plugin_name); - auth_plugin = mysqlnd_plugin_find(plugin_name); - mnd_sprintf_free(plugin_name); + DBG_ENTER(mysqlnd_conn_data::get_updated_connect_flags); + /* we allow load data local infile by default */ + mysql_flags |= MYSQLND_CAPABILITIES; - mysql_flags |= conn-options.flags; /* use the flags from set_client_option() */ - if (!auth_plugin) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, The server requested authentication
[PHP-CVS] com php-src: Use during connect the flags set with set_client_option(): ext/mysqlnd/mysqlnd.c
Commit:12e759c2eaafbf85ef8595e4c2ed0711a25091ef Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:27:06 +0100 Parents: d4650c5d69ffb49d476a2969c6200879bd424caf Branches: PHP-5.3 PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=12e759c2eaafbf85ef8595e4c2ed0711a25091ef Log: Use during connect the flags set with set_client_option() Changed paths: M ext/mysqlnd/mysqlnd.c Diff: diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index eaef49f..20bab91 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -691,6 +691,8 @@ MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND * conn, mysql_flags |= CLIENT_LOCAL_FILES | CLIENT_PS_MULTI_RESULTS; mysql_flags |= MYSQLND_CAPABILITIES; + mysql_flags |= conn-options.flags; /* use the flags from set_client_option() */ + if (db) { mysql_flags |= CLIENT_CONNECT_WITH_DB; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.4' into PHP-5.5: ext/mysqlnd/mysqlnd.c
Commit:cb6071ef54779e392cf50831399dfd66939de9a0 Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:30:56 +0100 Parents: ddcb67d446ba7a0637fdf3a52bd99ee80755 6a6ec195acb0a67b8728dd32fad5c82b37b31192 Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=cb6071ef54779e392cf50831399dfd66939de9a0 Log: Merge branch 'PHP-5.4' into PHP-5.5 Conflicts: ext/mysqlnd/mysqlnd.c Changed paths: MM ext/mysqlnd/mysqlnd.c diff --cc ext/mysqlnd/mysqlnd.c index b9db94b,3483d86..db1b901 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@@ -657,160 -491,116 +657,162 @@@ mysqlnd_connect_run_authentication ret = mysqlnd_switch_to_ssl_if_needed(conn, greet_packet, options, mysql_flags TSRMLS_CC); if (PASS == ret) { - zend_bool first_call = TRUE; + ret = mysqlnd_run_authentication(conn, user, passwd, passwd_len, db, db_len, + greet_packet-auth_plugin_data, greet_packet-auth_plugin_data_len, greet_packet-auth_protocol, + greet_packet-charset_no, options, mysql_flags, FALSE /*silent*/, FALSE/*is_change*/ TSRMLS_CC); + } + DBG_RETURN(ret); +} +/* }}} */ - char * switch_to_auth_protocol = NULL; - size_t switch_to_auth_protocol_len = 0; - char * requested_protocol = NULL; - zend_uchar * plugin_data; - size_t plugin_data_len; - plugin_data_len = greet_packet-auth_plugin_data_len; - plugin_data = mnd_emalloc(plugin_data_len + 1); - if (!plugin_data) { - ret = FAIL; - goto end; - } - memcpy(plugin_data, greet_packet-auth_plugin_data, plugin_data_len); - plugin_data[plugin_data_len] = '\0'; +/* {{{ mysqlnd_conn_data::execute_init_commands */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * conn TSRMLS_DC) +{ + enum_func_status ret = PASS; - requested_protocol = mnd_pestrdup(greet_packet-auth_protocol? greet_packet-auth_protocol: mysql_native_password, FALSE); - if (!requested_protocol) { - ret = FAIL; - goto end; + DBG_ENTER(mysqlnd_conn_data::execute_init_commands); + if (conn-options-init_commands) { + unsigned int current_command = 0; + for (; current_command conn-options-num_commands; ++current_command) { + const char * const command = conn-options-init_commands[current_command]; + if (command) { + MYSQLND_INC_CONN_STATISTIC(conn-stats, STAT_INIT_COMMAND_EXECUTED_COUNT); + if (PASS != conn-m-query(conn, command, strlen(command) TSRMLS_CC)) { + MYSQLND_INC_CONN_STATISTIC(conn-stats, STAT_INIT_COMMAND_FAILED_COUNT); + ret = FAIL; + break; + } + if (conn-last_query_type == QUERY_SELECT) { + MYSQLND_RES * result = conn-m-use_result(conn TSRMLS_CC); + if (result) { + result-m.free_result(result, TRUE TSRMLS_CC); + } + } + } } + } + DBG_RETURN(ret); +} +/* }}} */ - do { - struct st_mysqlnd_authentication_plugin * auth_plugin; - { - char * plugin_name = NULL; - mnd_sprintf(plugin_name, 0, auth_plugin_%s, requested_protocol); +/* {{{ mysqlnd_conn_data::get_updated_connect_flags */ +static unsigned int +MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * conn, unsigned int mysql_flags TSRMLS_DC) +{ + MYSQLND_NET * net = conn-net; - DBG_INF_FMT(looking for %s auth plugin, plugin_name); - auth_plugin = mysqlnd_plugin_find(plugin_name); - mnd_sprintf_free(plugin_name); + DBG_ENTER(mysqlnd_conn_data::get_updated_connect_flags); + /* we allow load data local infile by default */ + mysql_flags |= MYSQLND_CAPABILITIES; - if (!auth_plugin) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, The server requested authentication method unknown to the client [%s], requested_protocol); -
[PHP-CVS] com php-src: support for password expiration in mysqlnd, through a flag: ext/mysqlnd/mysqlnd.c ext/mysqlnd/mysqlnd_enum_n_def.h
Commit:ddcb67d446ba7a0637fdf3a52bd99ee80755 Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 15:33:07 +0100 Parents: 83f736aad4eaea1b2a6df70e81632a8069641894 Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ddcb67d446ba7a0637fdf3a52bd99ee80755 Log: support for password expiration in mysqlnd, through a flag Changed paths: M ext/mysqlnd/mysqlnd.c M ext/mysqlnd/mysqlnd_enum_n_def.h Diff: diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 653561e..b9db94b 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2282,7 +2282,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c break; #endif case MYSQL_OPT_LOCAL_INFILE: - if (!value || (*(unsigned int*) value) ? 1 : 0) { + if (value (*(unsigned int*) value) ? 1 : 0) { conn-options-flags |= CLIENT_LOCAL_FILES; } else { conn-options-flags = ~CLIENT_LOCAL_FILES; @@ -2366,6 +2366,13 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c DBG_INF_FMT(auth_protocol=%s, conn-options-auth_protocol); break; } + case MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: + if (value (*(unsigned int*) value) ? 1 : 0) { + conn-options-flags |= CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS; + } else { + conn-options-flags = ~CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS; + } + break; #ifdef WHEN_SUPPORTED_BY_MYSQLI case MYSQL_SHARED_MEMORY_BASE_NAME: case MYSQL_OPT_USE_RESULT: diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 7dd4d0f..abaaf1f 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -169,6 +169,8 @@ typedef enum mysqlnd_option MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH, MYSQL_SERVER_PUBLIC_KEY, + MYSQL_ENABLE_CLEARTEXT_PLUGIN, + MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, MYSQLND_DEPRECATED_ENUM1 = 200, #ifdef MYSQLND_STRING_TO_INT_CONVERSION MYSQLND_OPT_INT_AND_FLOAT_NATIVE = 201, -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: backport handling of expired passwords in mysqlnd to 5.4: ext/mysqlnd/mysqlnd.c ext/mysqlnd/mysqlnd_enum_n_def.h
Commit:258c76eb41a7eaf8e1e7b4994fa5f268c2060039 Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 18:58:29 +0100 Parents: bcd278ad7f3a8e549a3281600decd897dd7d73ce Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=258c76eb41a7eaf8e1e7b4994fa5f268c2060039 Log: backport handling of expired passwords in mysqlnd to 5.4 Changed paths: M ext/mysqlnd/mysqlnd.c M ext/mysqlnd/mysqlnd_enum_n_def.h Diff: diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index db0a111..0b81ac9 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2286,7 +2286,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c break; #endif case MYSQL_OPT_LOCAL_INFILE: - if (!value || (*(unsigned int*) value) ? 1 : 0) { + if (value (*(unsigned int*) value) ? 1 : 0) { conn-options-flags |= CLIENT_LOCAL_FILES; } else { conn-options-flags = ~CLIENT_LOCAL_FILES; @@ -2370,6 +2370,13 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c DBG_INF_FMT(auth_protocol=%s, conn-options-auth_protocol); break; } + case MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: + if (value (*(unsigned int*) value) ? 1 : 0) { + conn-options-flags |= CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS; + } else { + conn-options-flags = ~CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS; + } + break; #ifdef WHEN_SUPPORTED_BY_MYSQLI case MYSQL_SHARED_MEMORY_BASE_NAME: case MYSQL_OPT_USE_RESULT: diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 56a2bf9..92f6cb3 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -95,7 +95,9 @@ #define CLIENT_MULTI_RESULTS (1UL 17) /* Enable/disable multi-results */ #define CLIENT_PS_MULTI_RESULTS(1UL 18) /* Multi-results in PS-protocol */ #define CLIENT_PLUGIN_AUTH (1UL 19) /* Client supports plugin authentication */ - +#define CLIENT_CONNECT_ATTRS (1UL 20) /* Client supports connection attributes */ +#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL 21) /* Enable authentication response packet to be larger than 255 bytes. */ +#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS(1UL 22) /* Don't close the connection for a connection with expired password. */ #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL 30) #define MYSQLND_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_TRANSACTIONS | \ @@ -164,6 +166,9 @@ typedef enum mysqlnd_option MYSQL_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH, + MYSQL_SERVER_PUBLIC_KEY, + MYSQL_ENABLE_CLEARTEXT_PLUGIN, + MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, #if MYSQLND_UNICODE MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE = 200, #endif -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.4' into PHP-5.5: ext/mysqli/mysqli.c ext/mysqli/mysqli_api.c
Commit:846e506a3d1d11773171e08d3c6f9bbc7fc3dacd Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 19:15:29 +0100 Parents: 790096b68b2a58eb691e8a6f33325e8826bec263 d430b5a4eb26679a6dfa7055dff43cae8dabd20e Branches: PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=846e506a3d1d11773171e08d3c6f9bbc7fc3dacd Log: Merge branch 'PHP-5.4' into PHP-5.5 Changed paths: MM ext/mysqli/mysqli.c MM ext/mysqli/mysqli_api.c Diff: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Add mysqli support - constants and checking in mysqli_options() for the new constant for password expriration: ext/mysqli/mysqli.c ext/mysqli/mysqli_api.c
Commit:d430b5a4eb26679a6dfa7055dff43cae8dabd20e Author:Andrey Hristov and...@php.net Wed, 9 Jan 2013 19:14:48 +0100 Parents: 258c76eb41a7eaf8e1e7b4994fa5f268c2060039 Branches: PHP-5.4 PHP-5.5 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d430b5a4eb26679a6dfa7055dff43cae8dabd20e Log: Add mysqli support - constants and checking in mysqli_options() for the new constant for password expriration Changed paths: M ext/mysqli/mysqli.c M ext/mysqli/mysqli_api.c Diff: diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 1a7d72f..a4c1b87 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -838,6 +838,9 @@ PHP_MINIT_FUNCTION(mysqli) REGISTER_LONG_CONSTANT(MYSQLI_REFRESH_BACKUP_LOG, REFRESH_BACKUP_LOG, CONST_CS | CONST_PERSISTENT); #endif +#if MYSQL_VERSION_ID = 50611 || defined(MYSQLI_USE_MYSQLND) + REGISTER_LONG_CONSTANT(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); +#endif #ifdef MYSQLI_USE_MYSQLND mysqlnd_reverse_api_register_api(mysqli_reverse_api TSRMLS_CC); diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 277322f..2cda0aa 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1672,6 +1672,9 @@ static int mysqli_options_get_option_zval_type(int option) #ifdef MYSQL_OPT_SSL_VERIFY_SERVER_CERT REGISTER_LONG_CONSTANT(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); #endif /* MySQL 5.1.1., mysqlnd @ PHP 5.3.3 */ +#if MYSQL_VERSION_ID = 50611 || defined(MYSQLI_USE_MYSQLND) + case MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: +#endif return IS_LONG; #ifdef MYSQL_SHARED_MEMORY_BASE_NAME -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] tag php-src: create tag php-5.5.0alpha3
Tag php-5.5.0alpha3 in php-src.git was created Tag: 715849a09358462078fcac8debd24919f7c04232 Tagger: David Soria Parrad...@php.net Thu Jan 10 01:11:16 2013 +0100 Log: PHP 5.5.0 Alpha 3 -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJQ7gcnAAoJEME8cLhyZ7Ut5HAP/2FaGpM6NZLFO+TltIx2YbsX DZq+17feg7XCZDrShG8sOpYI5hPOnE7RRFxkjLuBnVLVwlrxRnzDUQo6WMBqgNbm Db+qbkdDXDdmMYsZ55+RjtSr719NqA2tC+a7brOobkHNKOoRYl/ZNPPiP9aPc7we bwa2FRPugcGTEoo4ezrDyTAQsSGY8CLn553Ldnpg3s8L3UzzlquUI9JumzkPVKfz OTQHo1C5JLyaJ6JvGG+LtTbme+mtBW2rXsCP9ssxcIDm33hA1lJwv1jc5nh7m5i8 jqUBMLJJDzaHNg92fKlw0LjT33yufntYOzcTF5hlv6++WV42MuK5lbK7Td0516bH uM67TzCLhNf+JCg1iIY1RDK+QUqUcsShLqWjizXr/PbKtDqjLuRIE1eLSF77vKnj lHyOX3fin1F7E6VXLUQbx36TYvoUPetsYvoiz9okS0MS2o+VfZLE244XMjOhrUVX MXx2Mh5wiF9LkXl99gBEgGxmBsOuDufV4qzEb36TbQaf53u+WThLc9BqdbFinqy4 uz8XsRxCHyIfeRz2MQ781R2PUUMRdUOsPjlOkFSnQV/vsK+kgjV0dAY/kqJrI70u fHVnpV7Tb7bLO8vnXVb41rj7JReLBp1LuhiiaF/gUVTdtDugUkLwUUEN4XalNQ4b /mdq/puQf7X8HisbWZ75 =daM9 -END PGP SIGNATURE- Link: http://git.php.net/?p=php-src.git;a=tag;h=715849a09358462078fcac8debd24919f7c04232 Target: a7c3d28e89e0617c54bf567eaca94fb8dad5dfdb Author: David Soria Parra d...@php.net Thu, 10 Jan 2013 01:11:02 +0100 Parents: 28ce2acb7a358eb3f8c9f63199c3b58eca5b0fd1 Target link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a7c3d28e89e0617c54bf567eaca94fb8dad5dfdb Target log: NEWS for PHP 5.5.0alpha3 Changed paths: M NEWS -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php