Req->Bug #51068 [Opn->Ana]: DirectoryIterator glob:// don't support current path relative queries

From: Date: Tue, 24 Oct 2017 07:42:40 +0000
Subject: Req->Bug #51068 [Opn->Ana]: DirectoryIterator glob:// don't support current path relative queries
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-212137@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=51068&edit=1 ID: 51068 Updated by: requinix@php.net Reported by: pedro dot laguna at pentura dot com Summary: DirectoryIterator glob:// don't support current path relative queries -Status: Open +Status: Analyzed -Type: Feature/Change Request +Type: Bug Package: SPL related Operating System: Linux -PHP Version: 5.3.1 +PHP Version: 7.1.9 Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2010-02-17 18:29:37] aharvey@php.net OK, strike my last patch, since it was only half of the solution. This is really two bugs for the price of one. The first problem is that globs without a path (such as glob://*) always had a / prepended to their file name within spl_filesystem_object_get_file_name(), which caused the problem in this bug: that a relative foo.txt was resulting in a call to stat("/foo.txt"), which was obviously wrong. The second problem is in the glob wrapper itself. php_glob_stream_path_split() had an off-by-one error that meant that glob patterns within the root directory resulted in an empty path string, just the same as a relative glob. This was being partially masked by the first problem, since the automatic prepending meant that globbing the root directory worked more or less by accident. I've added a phpt file for the reported issue. I'm unsure of the best way to attack testing iterating over the root directory in a platform-independent manner; this may be worth someone with more familiarity writing a test for this case (ie creating a DirectoryIterator with glob:///* on platforms where it makes sense and seeing if the results look vaguely sensible). So, the patches, (hopefully) ready for review and application: Against PHP_5_3: http://www.adamharvey.name/patches/bug-51068-5.3.patch Against trunk: http://www.adamharvey.name/patches/bug-51068-trunk.patch ------------------------------------------------------------------------ [2010-02-17 17:10:37] aharvey@php.net I kept looking into this after my initial post; I wasn't quite expecting this to be assigned quite so fast! A quick and dirty patch against PHP_5_3 that appears to fix this is at http://www.adamharvey.name/patches/bug-51068-spl_directory.patch -- I can cook up a .phpt to go with it pretty rapidly if desired. This also doesn't look terribly difficult to port to trunk. ------------------------------------------------------------------------ [2010-02-17 16:58:57] colder@php.net I'll look into it. Looks like glob://* makes DirectoryIterator generate paths like /file, which is wrong. ------------------------------------------------------------------------ [2010-02-17 16:57:44] pedro dot laguna at pentura dot com pedro@pedro:~$ php --version PHP 5.3.1-0.dotdeb.1 with Suhosin-Patch (cli) (built: Dec 5 2009 20:08:29) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies pedro@pedro:~$ apache2 -v Server version: Apache/2.2.12 (Ubuntu) Server built: Nov 12 2009 22:49:46 ------------------------------------------------------------------------ [2010-02-17 16:47:59] pajoye@php.net Which SAPI do you use? (or with which web server) ------------------------------------------------------------------------ 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 https://bugs.php.net/bug.php?id=51068 -- Edit this bug report at https://bugs.php.net/bug.php?id=51068&edit=1

« previous php.bugs (#212137) next »