Patch for bug# 41822

From: Date: Fri, 05 Oct 2007 07:09:44 +0000
Subject: Patch for bug# 41822
Groups: php.internals 
Request: Send a blank email to internals+get-32643@lists.php.net to get a copy of this message
Here is a patch for bug 41822. The expand_filepath() function will not work in Solaris if a non-root user attempts to read a file under a directory with only (--x) permissions. Currently expand_path() returns NULL and no FD is opened, although the file is readable. This patch adds a last-ditch effort to open includes using a relative path and returns NULL if it still can't get a file descriptor. expand_filepath() returns NULL in solaris because getcwd() returns NULL under the above conditions. Thanks, -Rob --- ./plain_wrapper.c.old 2007-10-05 02:50:59.000000000 -0400 +++ ./plain_wrapper.c 2007-10-05 02:55:38.000000000 -0400 @@ -885,9 +885,20 @@ return NULL; } - if ((realpath = expand_filepath(filename, NULL TSRMLS_CC)) == NULL) { - return NULL; - } + if ((realpath = expand_filepath(filename, NULL TSRMLS_CC)) == NULL) + { + if (options & STREAM_OPEN_FOR_INCLUDE) { + /* Attempt to open without path expansion anyways. + Files in Solaris dirs with --x will + not return a realpath, but are accessible */ + fd = open(filename, open_flags, 0666); + if (fd != -1) { + ret = php_stream_fopen_from_fd_int_rel(fd, mode, persistent_id); + return ret; } + else { + return NULL; } + } + } if (persistent) { spprintf(&persistent_id, 0, "streams_stdio_%d_%s", open_flags, realpath);

« previous php.internals (#32643) next »