Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: ext/standard/file.c
- ===================================================================
- --- ext/standard/file.c (revision 287717)
- +++ ext/standard/file.c (working copy)
- @@ -1364,16 +1364,25 @@
- PHPAPI int php_mkdir_ex(char *dir, long mode, int options TSRMLS_DC)
- {
- int ret;
- +#ifdef PHP_WIN32
- + char resolved_path_buff[MAXPATHLEN];
- +#endif
- if (PG(safe_mode) && (!php_checkuid(dir, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
- return -1;
- }
- - if (php_check_open_basedir(dir TSRMLS_CC)) {
- +#ifdef PHP_WIN32
- + if (!VCWD_REALPATH(dir, resolved_path_buff)) {
- return -1;
- }
- +#endif
- - if ((ret = VCWD_MKDIR(dir, (mode_t)mode)) < 0 && (options & REPORT_ERRORS)) {
- + if (php_check_open_basedir(resolved_path_buff TSRMLS_CC)) {
- + return -1;
- + }
- +
- + if ((ret = VCWD_MKDIR(resolved_path_buff, (mode_t)mode)) < 0 && (options & REPORT_ERRORS)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
- }
- Index: win32/readdir.c
- ===================================================================
- --- win32/readdir.c (revision 287717)
- +++ win32/readdir.c (working copy)
- @@ -25,9 +25,15 @@
- char *filespec;
- HANDLE handle;
- int index;
- + char resolved_path_buff[MAXPATHLEN];
- - filespec = (char *)malloc(strlen(dir) + 2 + 1);
- - strcpy(filespec, dir);
- +
- + if (!VCWD_REALPATH(dir, resolved_path_buff)) {
- + return NULL;
- + }
- +
- + filespec = (char *)malloc(strlen(resolved_path_buff) + 2 + 1);
- + strcpy(filespec, resolved_path_buff);
- index = strlen(filespec) - 1;
- if (index >= 0 && (filespec[index] == '/' ||
- (filespec[index] == '\\' && (index == 0 || !IsDBCSLeadByte(filespec[index-1])))))
- @@ -38,6 +44,7 @@
- dp->offset = 0;
- dp->finished = 0;
- +
- if ((handle = FindFirstFile(filespec, &(dp->fileinfo))) == INVALID_HANDLE_VALUE) {
- DWORD err = GetLastError();
- if (err == ERROR_NO_MORE_FILES) {
- @@ -48,7 +55,7 @@
- return NULL;
- }
- }
- - dp->dir = strdup(dir);
- + dp->dir = strdup(resolved_path_buff);
- dp->handle = handle;
- free(filespec);
Add Comment
Please, Sign In to add comment