iliaa Mon Jul 21 17:47:52 2003 EDT Added files: /php-src/ext/session/tests bug24592.phpt
Modified files: /php-src/ext/session session.c Log: Fixed bug #24592 (Possible crash in session extnsion, with NULL values) Index: php-src/ext/session/session.c diff -u php-src/ext/session/session.c:1.366 php-src/ext/session/session.c:1.367 --- php-src/ext/session/session.c:1.366 Tue Jun 10 16:03:36 2003 +++ php-src/ext/session/session.c Mon Jul 21 17:47:51 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session.c,v 1.366 2003/06/10 20:03:36 imajes Exp $ */ +/* $Id: session.c,v 1.367 2003/07/21 21:47:51 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -734,9 +734,12 @@ switch (n) { case HASH_KEY_IS_STRING: - zend_hash_find(&EG(symbol_table), str, str_len, (void **) &val); - if (val) { - ZEND_SET_SYMBOL_WITH_LENGTH(ht, str, str_len, *val, (*val)->refcount + 1 , 1); + if (zend_hash_find(&EG(symbol_table), str, str_len, (void **) &val) == SUCCESS && val) { + if (!PZVAL_IS_REF(*val)) { + (*val)->is_ref = 1; + (*val)->refcount += 1; + zend_hash_update(ht, str, str_len, val, sizeof(zval *), NULL); + } ret = 1; } break; Index: php-src/ext/session/tests/bug24592.phpt +++ php-src/ext/session/tests/bug24592.phpt --TEST-- Bug #24592 (crash when multiple NULL values are being stored) --INI-- register_globals=0 html_errors=0 --FILE-- <?php @session_start(); $foo = $_SESSION['foo']; $bar = $_SESSION['bar']; var_dump($foo, $bar, $_SESSION); $_SESSION['foo'] = $foo; $_SESSION['bar'] = $bar; var_dump($_SESSION); ?> --EXPECTF-- Notice: Undefined index: foo in %s on line %d Notice: Undefined index: bar in %s on line %d NULL NULL array(0) { } array(2) { ["foo"]=> NULL ["bar"]=> NULL } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php