Bug #51860 [Ana->Opn]: Include fails with toplevel symlink to /

From: Date: Fri, 21 May 2010 12:04:12 +0000
Subject: Bug #51860 [Ana->Opn]: Include fails with toplevel symlink to /
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-150702@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=51860&edit=1

 ID:              51860
 User updated by: stephan dot suerken at 1und1 dot de
 Reported by:     stephan dot suerken at 1und1 dot de
 Summary:         Include fails with toplevel symlink to /
-Status:          Analyzed
+Status:          Open
 Type:            Bug
 Package:         Reproducible crash
 PHP Version:     5.3.2

 New Comment:

> [2010-05-21 09:37 UTC] thekid@php.net

> Wait:

> So if the executed script itself is inside the symlink'd directory, 
> VCWD_REALPATH() does not correctly work (used by both include /
require and
> realpath(), that's why I'm using the latter here)

Great, thanks, that sounds much like what I expected ;).

If it might be helpful, I already stepped through the code with gdb
(breaking in some top level *resolve_path (cant remeber exaytly right
now) function ), finding the bug does _not_ occur then; maybe this hints
to some strange race condition.

Thx,

Stephan


Previous Comments:
------------------------------------------------------------------------
[2010-05-21 13:58:12] thekid@php.net

Here's the simplest way to reproduce:

xpsrv / # ln -s / phptest
xpsrv / # echo "OK" > /phpfile
xpsrv / # echo '<?php include("/phptest/phpfile");' > /phpinc

Works:
xpsrv / # php532 /phpinc
OK

Breaks:
xpsrv / # php532 /phptest/phpinc
Warning: include(/phptest/phpfile): failed to open stream: No such file
or directory in /phpinc on line 1
Warning: include(): Failed opening '/phptest/phpfile' for inclusion
(include_path='.:') in /phpinc on line 1

xpsrv / # php532 -v | head -1
PHP 5.3.2 (cli) (built: May 21 2010 12:18:37)

------------------------------------------------------------------------
[2010-05-21 13:44:33] stephan dot suerken at 1und1 dot de

> [2010-05-21 09:12 UTC] thekid@php.net 

Your "simplified" way does not produce the bug; did you do it with the
exact settings in the tarball (really, it does not harm!)? Thing is, the
slightest change in the "setup" make the bug go away, and the exact
setup described in the tarball reproduces it.

For what I know, you _need_ the extra include dir under / to reproduce,
and you _must_ call php as described in the "fail" script in the
tarball, i.e. with the full path _including_ the symlink. Both is not in
your simplified way to reproduce it.

Thanks!

Stephan

------------------------------------------------------------------------
[2010-05-21 13:37:53] thekid@php.net

Wait:

# /opt/php/php-5.3.2/sapi/cli/php -r
'var_dump(realpath("/phplink/phpinclude/inc123.php"));' 
string(22) "/phpinclude/inc123.php"

...and:
# echo '<?php var_dump(realpath("/phplink/phpinclude/inc123.php"));' >
test.php
# /opt/php/php-5.3.2/sapi/cli/php test.php
string(22) "/phpinclude/inc123.php"

But:
# echo '<?php var_dump(realpath("/phplink/phpinclude/inc123.php"));' >
/phplink/phptest/test.php
# /opt/php/php-5.3.2/sapi/cli/php /phplink/phptest/test.php  
bool(false)

So if the executed script itself is inside the symlink'd directory,
VCWD_REALPATH() does not correctly work (used by both include / require
and realpath(), that's why I'm using the latter here)

This does not occur with PHP 5.2.X (or PHP4, btw)

------------------------------------------------------------------------
[2010-05-21 13:12:21] thekid@php.net

Cannot reproduce on Gentoo with 5.3.2-RELEASE.

------------------------------------------------------------------------
[2010-05-21 13:05:09] stephan dot suerken at 1und1 dot de

>[2010-05-20 10:14 UTC] mike@php.net

>You think anybody's goind to untar something in his root AS root?

Well...yes ;). Look at the tarball first, it's harmless.

>Please provide some proper steps to reproduce, thank you.

I could not find another way to reproduce it (yet) but in /; the tarball
seems to be the easiest way to make someone else reproduce it.

Thx,

Stephan

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=51860


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51860&edit=1


Thread (23 messages)

« previous php.bugs (#150702) next »