mikuli.cz

:)
git clone https://git.sr.ht/~ashymad/mikuli.cz
Log | Files | Refs

commit 18c683f1f4dd4519e720655d2552ffe571ed7fcf
parent bb8d51e9f4b1cae341a225941ad1a6cfaf4a336a
Author: wunderfeyd <wunderfeyd@datenstrom.se>
Date:   Thu, 20 Apr 2023 06:36:55 +0200

Race condition during file write and parallel read. #861


Diffstat:
Msystem/extensions/core.php | 11+++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/system/extensions/core.php b/system/extensions/core.php @@ -2,7 +2,7 @@ // Core extension, https://github.com/annaesvensson/yellow-core class YellowCore { - const VERSION = "0.8.108"; + const VERSION = "0.8.109"; const RELEASE = "0.8.22"; public $content; // content files public $media; // media files @@ -1974,8 +1974,11 @@ class YellowToolbox { $fileHandle = @fopen($fileName, "rb"); if ($fileHandle) { clearstatcache(true, $fileName); - $fileSize = $sizeMax ? $sizeMax : filesize($fileName); - if ($fileSize) $fileData = fread($fileHandle, $fileSize); + if (flock($fileHandle, LOCK_SH)) { + $fileSize = $sizeMax ? $sizeMax : filesize($fileName); + if ($fileSize) $fileData = fread($fileHandle, $fileSize); + flock($fileHandle, LOCK_UN); + } fclose($fileHandle); } return $fileData; @@ -1988,7 +1991,7 @@ class YellowToolbox { $path = dirname($fileName); if (!is_string_empty($path) && !is_dir($path)) @mkdir($path, 0777, true); } - $fileHandle = @fopen($fileName, "wb"); + $fileHandle = @fopen($fileName, "cb"); if ($fileHandle) { clearstatcache(true, $fileName); if (flock($fileHandle, LOCK_EX)) {