1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Fix bug #53226 (file_exists fails on big filenames).

This commit is contained in:
Adam Harvey
2010-11-05 05:28:07 +00:00
parent dd038a9c89
commit b84e262f63
3 changed files with 40 additions and 0 deletions

1
NEWS
View File

@@ -55,6 +55,7 @@
- Fixed bug #53241 (stream casting that relies on fdopen/fopencookie fails
with streams opened with, inter alia, the 'xb' mode). (Gustavo)
- Fixed bug #53226 (file_exists fails on big filenames). (Adam)
- Fixed bug #53198 (changing INI setting "from" with ini_set did not have any
effect). (Gustavo)
- Fixed bug #53180 (post_max_size=0 not disabling the limit when the content

View File

@@ -292,6 +292,14 @@ PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC)
char *ptr;
char *end;
/* Check if the path is too long so we can give a more useful error
* message. */
if (strlen(path) > (MAXPATHLEN - 1)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "File name is longer than the maximum allowed path length on this platform (%d): %s", MAXPATHLEN, path);
errno = EINVAL;
return -1;
}
pathbuf = estrdup(PG(open_basedir));
ptr = pathbuf;

View File

@@ -0,0 +1,31 @@
--TEST--
Bug #53226 (file_exists fails on big filenames)
--INI--
open_basedir=.
--FILE--
<?php
require_once "open_basedir.inc";
create_directories();
var_dump(file_exists('./test/ok/ok.txt'));
var_dump(file_exists('./test/foo'));
// Picked an arbitrarily large number that should be beyond PATH_MAX on every
// OS I know about.
$file = str_repeat('x', 40000);
var_dump(file_exists("./test/$file"));
?>
--CLEAN--
<?php
require_once "open_basedir.inc";
delete_directories();
?>
--EXPECTF--
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
Warning: file_exists(): File name is longer than the maximum allowed path length on this platform (%d): %s in %s on line %d
bool(false)