MDL-71991 files: check return value of rename when writing files

This commit is contained in:
Tim Hunt
2021-06-22 19:36:09 +01:00
parent 338b60f43b
commit 1af25720b0
+16 -2
View File
@@ -393,7 +393,14 @@ class file_system_filedir extends file_system {
ignore_user_abort($prev);
throw new file_exception('storedfilecannotcreatefile');
}
rename($hashfile.'.tmp', $hashfile);
if (!rename($hashfile.'.tmp', $hashfile)) {
// Something very strange went wrong.
@unlink($hashfile . '.tmp');
// Note, we don't try to clean up $hashfile. Almost certainly, if it exists
// (e.g. written by another process?) it will be right, so don't wipe it.
ignore_user_abort($prev);
throw new file_exception('storedfilecannotcreatefile');
}
chmod($hashfile, $this->filepermissions); // Fix permissions if needed.
if (file_exists($hashfile.'.tmp')) {
// Just in case anything fails in a weird way.
@@ -470,7 +477,14 @@ class file_system_filedir extends file_system {
ignore_user_abort($prev);
throw new file_exception('storedfilecannotcreatefile');
}
rename($hashfile.'.tmp', $hashfile);
if (!rename($hashfile.'.tmp', $hashfile)) {
// Something very strange went wrong.
@unlink($hashfile . '.tmp');
// Note, we don't try to clean up $hashfile. Almost certainly, if it exists
// (e.g. written by another process?) it will be right, so don't wipe it.
ignore_user_abort($prev);
throw new file_exception('storedfilecannotcreatefile');
}
chmod($hashfile, $this->filepermissions); // Fix permissions if needed.
if (file_exists($hashfile.'.tmp')) {
// Just in case anything fails in a weird way.