mirror of
https://github.com/php/php-src.git
synced 2024-11-25 02:44:58 +08:00
Fix bug #53226 (file_exists fails on big filenames).
This commit is contained in:
parent
8365739663
commit
7f0d3f7d70
@ -291,6 +291,14 @@ PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC)
|
|||||||
char *ptr;
|
char *ptr;
|
||||||
char *end;
|
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));
|
pathbuf = estrdup(PG(open_basedir));
|
||||||
|
|
||||||
ptr = pathbuf;
|
ptr = pathbuf;
|
||||||
|
31
tests/security/bug53226.phpt
Normal file
31
tests/security/bug53226.phpt
Normal 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)
|
Loading…
Reference in New Issue
Block a user