PHP 4.0 Bug #7258: Dangling references destroy session state
| From: | sd at b-comp dot de | Date: | Mon, 16 Oct 2000 20:08:47 +0000 |
| Subject: | PHP 4.0 Bug #7258: Dangling references destroy session state | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-35190@lists.php.net to get a copy of this message | ||
From: sd@b-comp.de
Operating system: Linux
PHP version: 4.0.3pl1
PHP Bug Type: Scripting Engine problem
Bug description: Dangling references destroy session state
(The problem described is specific to 4.0.3 and 4.0.3pl1.
The scripts below work fine with 4.0.2.)
Let $a be an array kept in the session state. Whenever
a reference $x to an element of $a falls of the end of a
script, the referenced array element is destroyed.
Putting an ``undef($x);'' at the end of the script solves
the problem. The following two scripts demonstate the
problem:
BEGIN FILE test1.php
<?php
session_register('a');
$a = array();
$a['foo'] = 'FOO';
?>
<html>
<a href="test2.php?<?=SID?>">link</a>
</html>
END FILE
BEGIN FILE test2.php
<?php
session_register('a');
$x = &$a['foo'];
?>
<html>
x=<?=$x?><br>
<a href="test2.php?<?=SID?>">link</a>
</html>
END FILE
Open test1.php in a browser and follow the link to
test2.php. You'll see that $x is 'FOO'. Now follow
that link again and $x is undefined.
The scripts work if you put an ``undef($x);'' at the
end of test2.php.
--
Edit Bug report at: http://bugs.php.net/?id=7258&edit=1