[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

2013-01-09 Thread Dmitry Stogov
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

2013-01-09 Thread Dmitry Stogov
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

2013-01-09 Thread Dmitry Stogov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Stas Malyshev
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread Andrey Hristov
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

2013-01-09 Thread David Soria Parra
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