From 74798df3e9ac48668871d023eaf551ab3496ce2a Mon Sep 17 00:00:00 2001 From: Adrian Greeve Date: Mon, 18 Dec 2017 11:32:10 +0800 Subject: [PATCH] MDL-52100 filelib: Files that are oversized are checked with user. Files that are oversized could have been uploaded by a user who can ignore the file size limits. These files should not be deleted in these situations. --- lib/filelib.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/filelib.php b/lib/filelib.php index 870bbaa08a7..90b9eee8b1e 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -848,6 +848,7 @@ function file_save_draft_area_files($draftitemid, $contextid, $component, $filea $newhashes = array(); $filecount = 0; + $context = context::instance_by_id($contextid, MUST_EXIST); foreach ($draftfiles as $file) { if (!$options['subdirs'] && $file->get_filepath() !== '/') { continue; @@ -856,8 +857,11 @@ function file_save_draft_area_files($draftitemid, $contextid, $component, $filea continue; } if (!$file->is_directory()) { - if ($options['maxbytes'] and $options['maxbytes'] < $file->get_filesize()) { - // oversized file - should not get here at all + // Check to see if this file was uploaded by someone who can ignore the file size limits. + $fileusermaxbytes = get_user_max_upload_file_size($context, $options['maxbytes'], 0, 0, $file->get_userid()); + if ($fileusermaxbytes != USER_CAN_IGNORE_FILE_SIZE_LIMITS + && ($options['maxbytes'] and $options['maxbytes'] < $file->get_filesize())) { + // Oversized file. continue; } if ($options['maxfiles'] != -1 and $options['maxfiles'] <= $filecount) {