1
0
mirror of https://github.com/php/php-src.git synced 2026-04-12 10:33:11 +02:00

Fixed move_uploaded_file() to always set file permissions of resulting file according to UMASK (Andrew Sitnikov)

This commit is contained in:
Dmitry Stogov
2007-10-22 07:37:37 +00:00
parent 7f32916af0
commit fa6e5df126

View File

@@ -53,6 +53,11 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
#include <time.h>
#include <stdio.h>
#ifndef PHP_WIN32
#include <sys/types.h>
#include <sys/stat.h>
#endif
#ifdef NETWARE
#include <netinet/in.h>
#endif
@@ -6061,6 +6066,10 @@ PHP_FUNCTION(move_uploaded_file)
int path_len, new_path_len;
zend_bool successful = 0;
#ifndef PHP_WIN32
int oldmask; int ret;
#endif
if (!SG(rfc1867_uploaded_files)) {
RETURN_FALSE;
}
@@ -6084,6 +6093,16 @@ PHP_FUNCTION(move_uploaded_file)
VCWD_UNLINK(new_path);
if (VCWD_RENAME(path, new_path) == 0) {
successful = 1;
#ifndef PHP_WIN32
oldmask = umask(077);
umask(oldmask);
ret = VCWD_CHMOD(new_path, 0666 & ~oldmask);
if (ret == -1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
}
#endif
} else if (php_copy_file_ex(path, new_path, STREAM_DISABLE_OPEN_BASEDIR TSRMLS_CC) == SUCCESS) {
VCWD_UNLINK(path);
successful = 1;