return;
}
- if ($serendipity['serendipityUserlevel'] < USERLEVEL_ADMIN && serendipity_isActiveFile($serendipity['GET']['newname'])) {
+ if (serendipity_isActiveFile(basename($serendipity['GET']['newname']))) {
printf(ERROR_FILE_FORBIDDEN, $serendipity['GET']['newname']);
return;
}
// First find out whether to fetch a file or accept an upload
if ($serendipity['POST']['imageurl'] != '' && $serendipity['POST']['imageurl'] != 'http://') {
if (!empty($serendipity['POST']['target_filename'])) {
- $tfile = serendipityNormalizeFilename($serendipity['POST']['target_filename']);
+ $tfile = $serendipity['POST']['target_filename'];
} else {
- $tfile = serendipityNormalizeFilename(basename($serendipity['POST']['imageurl']));
+ $tfile = $serendipity['POST']['imageurl'];
}
+
+ $tfile = serendipity_uploadSecure(basename($tfile));
- if ($serendipity['serendipityUserlevel'] < USERLEVEL_ADMIN && serendipity_isActiveFile($tfile)) {
+ if (serendipity_isActiveFile($tfile)) {
printf(ERROR_FILE_FORBIDDEN, $tfile);
break;
}
- $tfile = serendipityNormalizeFilename(serendipity_uploadSecure($tfile));
$serendipity['POST']['target_directory'] = serendipity_uploadSecure($serendipity['POST']['target_directory'], true, true);
$target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'] . $tfile;
}
} else {
if (!empty($serendipity['POST']['target_filename'])) {
- $tfile = serendipityNormalizeFilename($serendipity['POST']['target_filename']);
+ $tfile = $serendipity['POST']['target_filename'];
} else {
- $tfile = serendipityNormalizeFilename($_FILES['userfile']['name']);
+ $tfile = $_FILES['userfile']['name'];
}
- if ($serendipity['serendipityUserlevel'] < USERLEVEL_ADMIN && preg_match('@\.(php[34]?|[ps]html?)$@i', $tfile)) {
+ $tfile = serendipity_uploadSecure(basename($tfile));
+
+ if (serendipity_isActiveFile($tfile)) {
printf(ERROR_FILE_FORBIDDEN, $tfile);
break;
}
- $tfile = serendipityNormalizeFilename(serendipity_uploadSecure($tfile));
$serendipity['POST']['target_directory'] = serendipity_uploadSecure($serendipity['POST']['target_directory'], true, true);
$target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'] . $tfile;
echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
} else {
// Accept file
- if (move_uploaded_file($_FILES['userfile']['tmp_name'], $target)) {
+ if (is_uploaded_file($_FILES['userfile']['tmp_name']) && move_uploaded_file($_FILES['userfile']['tmp_name'], $target)) {
printf(FILE_UPLOADED . '<br />', $_FILES['userfile']['name'], $target);
@umask(0000);
@chmod($target, 0664);
# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)
# All rights reserved. See LICENSE file for licensing details
-/**
-* Normalize a filename
-**/
-function serendipityNormalizeFilename($in) {
- $out = preg_replace('![^a-zA-Z0-9\._/-]!', '', $in);
- return $out;
-}
-
function serendipity_isActiveFile($file) {
if (preg_match('@^\.@', $file)) {
return true;
$var = preg_replace('@^(/+)@', '', $var);
if ($append_slash) {
- if (substr($var, -1, 1) != '/') {
+ if (!empty($var) && substr($var, -1, 1) != '/') {
$var .= '/';
}
}