[PHP-CVS] com php-src: Fixed uninitialized zval.type (Yoram): win32/registry.c
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
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
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
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
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
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