[PHP-CVS] com php-src: Fixed uninitialized zval.type (Yoram): win32/registry.c

2013-01-10 Thread Dmitry Stogov
Commit:e1410b5a70543856de3978603b41fbf2ca5d330c
Author:Dmitry Stogov  Thu, 10 Jan 2013 18:53:10 
+0400
Parents:   dc9f0e70b78b5ea998f319c63fb181eb4f5bda41
Branches:  PHP-5.3 PHP-5.4 PHP-5.5 master

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

Log:
Fixed uninitialized zval.type (Yoram)

Changed paths:
  M  win32/registry.c


Diff:
diff --git a/win32/registry.c b/win32/registry.c
index 638d85a..685a09d 100644
--- a/win32/registry.c
+++ b/win32/registry.c
@@ -91,6 +91,7 @@ static int LoadDirectory(HashTable *directories, HKEY key, 
char *path, int path_
INIT_PZVAL(data);
Z_STRVAL_P(data) = 
zend_strndup(value, value_len-1);
Z_STRLEN_P(data) = value_len-1;
+   Z_TYPE_P(data) = IS_STRING;
zend_hash_update(ht, name, 
name_len+1, &data, sizeof(zval*), NULL);
}
}


--
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/tests/mysqli_constants.phpt

2013-01-10 Thread Ulf Wendel
Commit:f787e21ef5fdcd1a2ec94bc341ba48a83c743e32
Author:ULF WENDEL  Thu, 10 Jan 2013 14:53:46 +0100
Parents:   b3a934bdb317845c56247b55db4212ffc4171942 
36e88d78e6eb471acaf43bd2229891670a0d44a1
Branches:  PHP-5.5 master

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

Log:
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  MySQL 5.6 EXPIRE PASSWORD flag tests

Changed paths:
  MM  ext/mysqli/tests/mysqli_constants.phpt


Diff:



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



[PHP-CVS] com php-src: MySQL 5.6 EXPIRE PASSWORD flag tests: ext/mysqli/tests/mysqli_constants.phpt ext/mysqli/tests/mysqli_expire_password.phpt

2013-01-10 Thread Ulf Wendel
Commit:36e88d78e6eb471acaf43bd2229891670a0d44a1
Author:ULF WENDEL  Thu, 10 Jan 2013 14:51:14 +0100
Parents:   f659ec108f2a3a8278300e6f110545e219f2a1b7
Branches:  PHP-5.4 PHP-5.5 master

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

Log:
MySQL 5.6 EXPIRE PASSWORD flag tests

Changed paths:
  M  ext/mysqli/tests/mysqli_constants.phpt
  A  ext/mysqli/tests/mysqli_expire_password.phpt


Diff:
diff --git a/ext/mysqli/tests/mysqli_constants.phpt 
b/ext/mysqli/tests/mysqli_constants.phpt
index 613dddf..8bdc849 100644
--- a/ext/mysqli/tests/mysqli_constants.phpt
+++ b/ext/mysqli/tests/mysqli_constants.phpt
@@ -176,6 +176,10 @@ require_once('skipifconnectfailure.inc');
}
}
 
+   if (($IS_MYSQLND && version_compare(PHP_VERSION, ' 5.4.12-dev', '>=')) 
|| (!$IS_MYSQLND && ($version > 50610))) {
+   /* could be that MySQL/libmysql 5.6.9 had the flag already but 
it was no stable release */
+   $expected_constants["MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS"] 
= true;
+   }
 
$unexpected_constants = array();
 
diff --git a/ext/mysqli/tests/mysqli_expire_password.phpt 
b/ext/mysqli/tests/mysqli_expire_password.phpt
new file mode 100644
index 000..ce89a21
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_expire_password.phpt
@@ -0,0 +1,145 @@
+--TEST--
+MySQL 5.6 EXPIRE PASSWORD protocol change
+--SKIPIF--
+=")) {
+   die("SKIP Available in mysqlnd as of PHP 5.4.12-dev");
+}
+
+if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+   die(sprintf("SKIP Cannot connect to the server using host=%s, user=%s, 
passwd=***, dbname=%s, port=%s, socket=%s\n",
+   $host, $user, $db, $port, $socket));
+}
+
+if ($link->server_version < 50610)
+   die(sprintf("SKIP Needs MySQL 5.6.10 or newer, found MySQL %s\n", 
$link->server_info));
+
+if  (!$IS_MYSQLND && (mysqli_get_client_version() < 50610)) {
+   die(sprintf("SKIP Needs libmysql 5.6.10 or newer, found  %s\n", 
mysqli_get_client_version()));
+}
+
+mysqli_query($link, 'DROP USER expiretest');
+mysqli_query($link, 'DROP USER expiretest@localhost');
+
+if (!mysqli_query($link, 'CREATE USER expiretest@"%"') ||
+   !mysqli_query($link, 'CREATE USER expiretest@"localhost"')) {
+   printf("skip Cannot create second DB user [%d] %s", 
mysqli_errno($link), mysqli_error($link));
+   mysqli_close($link);
+   die("skip CREATE USER failed");
+}
+
+if (!mysqli_query($link, 'ALTER USER expiretest@"%" PASSWORD EXPIRE') ||
+   !mysqli_query($link, 'ALTER USER expiretest@"localhost" PASSWORD 
EXPIRE')) {
+   printf("skip Cannot modify second DB user [%d] %s", 
mysqli_errno($link), mysqli_error($link));
+   mysqli_close($link);
+   die("skip ALTER USER failed");
+}
+
+if (!$link->query("DROP TABLE IF EXISTS test") ||
+   !$link->query("CREATE TABLE test (id INT)") || !$link->query("INSERT 
INTO test(id) VALUES (1)"))
+   die(sprintf("SKIP [%d] %s\n", $link->errno, $link->error));
+
+
+
+if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO 
expiretest@'%%'", $db)) ||
+   !mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO 
expiretest@'localhost'", $db))) {
+   printf("skip Cannot grant SELECT to user [%d] %s", mysqli_errno($link), 
mysqli_error($link));
+   mysqli_close($link);
+   die("skip GRANT failed");
+}
+?>
+--FILE--
+query("SELECT id FROM test WHERE id = 1");
+   printf("[002] Connect should fail, [%d] %s\n", $link->errno, 
$link->error);
+   }
+
+   /* explicitly requesting default */
+   $link = mysqli_init();
+   $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 0);
+   if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, 
$socket)) {
+   printf("[003] Cannot connect [%d] %s\n",
+   mysqli_connect_errno(), mysqli_connect_error());
+   } else {
+   $link->query("SELECT id FROM test WHERE id = 1");
+   printf("[004] Connect should fail, [%d] %s\n", $link->errno, 
$link->error);
+   }
+
+   /* allow connect */
+   $link = mysqli_init();
+   $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
+   if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, 
$socket)) {
+   printf("[005] Cannot connect [%d] %s\n",
+   mysqli_connect_errno(), mysqli_connect_error());
+   } else {
+   $link->query("SELECT id FROM test WHERE id = 1");
+   printf("[006] Connect allowed, query fail, [%d] %s\n", 
$link->errno, $link->error);
+   $link->close();
+   }
+
+   /* allow connect, fix pw */
+   $link = mysqli_init();
+   $link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
+   if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, 
$socket)) {
+   printf("[007] Canno

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-10 Thread Dmitry Stogov
Hi Stas,

Actually this change in zend_object structure doesn't affect the previous
structure layout,
because of field alignment. The new 1 byte field created inside a 2 byte
hole that wasn't used before.

Thanks. Dmitry,

On Wed, Jan 9, 2013 at 8:53 PM, Stas Malyshev wrote:

> 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  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--
> > + > +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;
> >   }
> >

[PHP-CVS] com php-src: Fix test after fix for bug #63943 (Bad warning text from strpos() on empty needle) See commit c05ee74e7ff28b49018bf3e8f452bfd5386d1b68: ext/standard/tests/strings/strpos.phpt

2013-01-10 Thread Remi Collet
Commit:dc9f0e70b78b5ea998f319c63fb181eb4f5bda41
Author:Remi Collet  Thu, 10 Jan 2013 11:14:38 +0100
Parents:   12e759c2eaafbf85ef8595e4c2ed0711a25091ef
Branches:  PHP-5.3

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

Log:
Fix test after fix for bug #63943 (Bad warning text from strpos() on empty 
needle)
See commit c05ee74e7ff28b49018bf3e8f452bfd5386d1b68

Bugs:
https://bugs.php.net/63943

Changed paths:
  M  ext/standard/tests/strings/strpos.phpt


Diff:
diff --git a/ext/standard/tests/strings/strpos.phpt 
b/ext/standard/tests/strings/strpos.phpt
index 706ddfd..9b44584 100644
Binary files a/ext/standard/tests/strings/strpos.phpt and 
b/ext/standard/tests/strings/strpos.phpt differ


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



[PHP-CVS] svn: /SVNROOT/ global_avail

2013-01-10 Thread Rasmus Lerdorf
rasmus   Thu, 10 Jan 2013 08:34:37 +

Revision: http://svn.php.net/viewvc?view=revision&revision=329048

Log:
Karma

Changed paths:
U   SVNROOT/global_avail

Modified: SVNROOT/global_avail
===
--- SVNROOT/global_avail2013-01-10 05:18:07 UTC (rev 329047)
+++ SVNROOT/global_avail2013-01-10 08:34:37 UTC (rev 329048)
@@ -58,7 +58,7 @@
 # The PHP Web Group maintains www.php.net, news.php.net, bugs.php.net,
 # people.php.net, master.php.net, wiki.php.net, pecl.php.net and qa.php.net.

-avail|salathe,scottmac,jmertic,lsmith,johannes,iliaa,cmv,tcobb,gareth,jah,eschmid,ronabop,derick,sterling,stas,phildriscoll,jmoore,andre,jani,david,lyric,zimt,mk,goba,zak,jmcastagnetto,dams,tom,jacques,sebastian,georg,mj,imajes,cortesi,sander,markonen,edink,jan,victor,mfischer,wez,sesser,pollita,alindeman,magnus,iliaa,philip,didou,sfox,sean,dufuz,nlopess,pajoye,helly,tony2001,bjori,felipe,dsp,aharvey,danbrown,moacir,till,vrana,tyrael,nikic,laruence|web/php.git,web/bugs.git,web/master.git,web/news.git,web/php-hosts,web/wiki.git,web/people.git,web/pecl.git,web/qa.git,web/bugs.git
+avail|salathe,scottmac,jmertic,lsmith,johannes,iliaa,cmv,tcobb,gareth,jah,eschmid,ronabop,derick,sterling,stas,phildriscoll,jmoore,andre,jani,david,lyric,zimt,mk,goba,zak,jmcastagnetto,dams,tom,jacques,sebastian,georg,mj,imajes,cortesi,sander,markonen,edink,jan,victor,mfischer,wez,sesser,pollita,alindeman,magnus,iliaa,philip,didou,sfox,sean,dufuz,nlopess,pajoye,helly,tony2001,bjori,felipe,dsp,aharvey,danbrown,moacir,till,vrana,tyrael,nikic,laruence,remi,jorton,vdanen|web/php.git,web/bugs.git,web/master.git,web/news.git,web/php-hosts,web/wiki.git,web/people.git,web/pecl.git,web/qa.git,web/bugs.git

 avail|degeberg|web/bugs.git
 avail|ericstewart|web/php.git/archive

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