From bace4695ac371a40aa01f8c013994657bfd5203b Mon Sep 17 00:00:00 2001 From: El RIDO Date: Sun, 18 May 2025 20:21:34 +0200 Subject: [PATCH 1/3] update zlib js suffix, as a cache breaker --- js/common.js | 2 +- js/{zlib-1.3.1.js => zlib-1.3.1-1.js} | 0 lib/Configuration.php | 2 +- tpl/bootstrap.php | 2 +- tpl/bootstrap5.php | 2 +- tpl/page.php | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename js/{zlib-1.3.1.js => zlib-1.3.1-1.js} (100%) diff --git a/js/common.js b/js/common.js index ddf2f5e5..c693ad10 100644 --- a/js/common.js +++ b/js/common.js @@ -11,7 +11,7 @@ global.WebCrypto = require('@peculiar/webcrypto').Crypto; // application libraries to test global.$ = global.jQuery = require('./jquery-3.7.1'); global.RawDeflate = require('./rawinflate-0.3').RawDeflate; -global.zlib = require('./zlib-1.3.1').zlib; +global.zlib = require('./zlib-1.3.1-1').zlib; require('./prettify'); global.prettyPrint = window.PR.prettyPrint; global.prettyPrintOne = window.PR.prettyPrintOne; diff --git a/js/zlib-1.3.1.js b/js/zlib-1.3.1-1.js similarity index 100% rename from js/zlib-1.3.1.js rename to js/zlib-1.3.1-1.js diff --git a/lib/Configuration.php b/lib/Configuration.php index daa05d7c..a8245816 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -123,7 +123,7 @@ class Configuration 'js/purify-3.2.5.js' => 'sha512-eLlLLL/zYuf5JuG0x4WQm687MToqOGP9cDQHIdmOy1ZpjiY4J48BBcOM7DtZheKk1UogW920+9RslWYB4KGuuA==', 'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==', 'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==', - 'js/zlib-1.3.1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==', + 'js/zlib-1.3.1-1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==', ), ); diff --git a/tpl/bootstrap.php b/tpl/bootstrap.php index 5d5ea677..a07d4f9c 100644 --- a/tpl/bootstrap.php +++ b/tpl/bootstrap.php @@ -55,7 +55,7 @@ if ($ZEROBINCOMPATIBILITY) : - _scriptTag('js/zlib-1.3.1.js', 'async'); ?> + _scriptTag('js/zlib-1.3.1-1.js', 'async'); ?> _scriptTag('js/base-x-4.0.0.js', 'defer'); ?> _scriptTag('js/rawinflate-0.3.js', 'defer'); ?> _scriptTag('js/bootstrap-3.4.1.js', 'defer'); ?> diff --git a/tpl/bootstrap5.php b/tpl/bootstrap5.php index 916669ca..e8de680a 100644 --- a/tpl/bootstrap5.php +++ b/tpl/bootstrap5.php @@ -38,7 +38,7 @@ if ($ZEROBINCOMPATIBILITY) : - _scriptTag('js/zlib-1.3.1.js', 'defer'); ?> + _scriptTag('js/zlib-1.3.1-1.js', 'defer'); ?> _scriptTag('js/base-x-4.0.0.js', 'defer'); ?> _scriptTag('js/rawinflate-0.3.js', 'defer'); ?> _scriptTag('js/bootstrap-5.3.3.js', 'async'); ?> diff --git a/tpl/page.php b/tpl/page.php index 0753bff4..fb4cf8e9 100644 --- a/tpl/page.php +++ b/tpl/page.php @@ -34,7 +34,7 @@ if ($ZEROBINCOMPATIBILITY): - _scriptTag('js/zlib-1.3.1.js', 'async'); ?> + _scriptTag('js/zlib-1.3.1-1.js', 'async'); ?> _scriptTag('js/base-x-4.0.0.js', 'async'); ?> _scriptTag('js/rawinflate-0.3.js', 'async'); ?> Date: Sun, 18 May 2025 20:52:46 +0200 Subject: [PATCH 2/3] replicate reported error --- tst/Data/FilesystemTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tst/Data/FilesystemTest.php b/tst/Data/FilesystemTest.php index 89f5395b..3f0a1563 100644 --- a/tst/Data/FilesystemTest.php +++ b/tst/Data/FilesystemTest.php @@ -178,4 +178,16 @@ class FilesystemTest extends TestCase $this->assertEquals($this->_model->readComments($dataid), array($comment['meta']['created'] => $comment), "comment of $dataid wasn't modified in the conversion"); } } + + public function testValueFileErrorHandling() + { + define('VALID', 'valid content'); + foreach (array('purge_limiter', 'salt', 'traffic_limiter') as $namespace) { + file_put_contents($this->_invalidPath . DIRECTORY_SEPARATOR . $namespace . '.php', 'invalid content'); + $model = new Filesystem(array('dir' => $this->_invalidPath)); + $this->assertEquals($model->getValue($namespace), '', 'empty default value returned, invalid content ignored'); + $this->assertTrue($model->setValue(VALID, $namespace), 'setting valid value'); + $this->assertEquals($model->getValue($namespace), VALID, 'valid value returned'); + } + } } From c08a792f01227946a2e373c785ddc5bd33401f8e Mon Sep 17 00:00:00 2001 From: El RIDO Date: Sun, 18 May 2025 21:15:39 +0200 Subject: [PATCH 3/3] handle undefined global, fixes #1544 --- CHANGELOG.md | 2 ++ lib/Data/Filesystem.php | 14 +++++++++----- tst/Data/FilesystemTest.php | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d8bff0f..99d045b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * CHANGED: Passing large data structures by reference to reduce memory consumption (#858) * CHANGED: Removed use of ctype functions and polyfill library for ctype * CHANGED: Upgrading libraries to: DOMpurify 3.2.5, ip-lib 1.20.0 +* FIXED: Bump zlib library suffix, ensuring cache refresh for WASM streaming change +* FIXED: Handle undefined globals in file based persisted values (#1544) ## 1.7.6 (2025-02-01) * ADDED: Ability to copy the paste by clicking the copy icon button or using the keyboard shortcut ctrl+c/cmd+c (#1390 & #12) diff --git a/lib/Data/Filesystem.php b/lib/Data/Filesystem.php index ac91db11..85cd2a5e 100644 --- a/lib/Data/Filesystem.php +++ b/lib/Data/Filesystem.php @@ -276,7 +276,7 @@ class Filesystem extends AbstractData case 'purge_limiter': return $this->_storeString( $this->_path . DIRECTORY_SEPARATOR . 'purge_limiter.php', - '_storeString( @@ -308,7 +308,9 @@ class Filesystem extends AbstractData $file = $this->_path . DIRECTORY_SEPARATOR . 'purge_limiter.php'; if (is_readable($file)) { require $file; - return $GLOBALS['purge_limiter']; + if (array_key_exists('purge_limiter', $GLOBALS)) { + return $GLOBALS['purge_limiter']; + } } break; case 'salt': @@ -324,9 +326,11 @@ class Filesystem extends AbstractData $file = $this->_path . DIRECTORY_SEPARATOR . 'traffic_limiter.php'; if (is_readable($file)) { require $file; - $this->_last_cache = $GLOBALS['traffic_limiter']; - if (array_key_exists($key, $this->_last_cache)) { - return $this->_last_cache[$key]; + if (array_key_exists('traffic_limiter', $GLOBALS)) { + $this->_last_cache = $GLOBALS['traffic_limiter']; + if (array_key_exists($key, $this->_last_cache)) { + return $this->_last_cache[$key]; + } } } break; diff --git a/tst/Data/FilesystemTest.php b/tst/Data/FilesystemTest.php index 3f0a1563..49ffe954 100644 --- a/tst/Data/FilesystemTest.php +++ b/tst/Data/FilesystemTest.php @@ -185,7 +185,9 @@ class FilesystemTest extends TestCase foreach (array('purge_limiter', 'salt', 'traffic_limiter') as $namespace) { file_put_contents($this->_invalidPath . DIRECTORY_SEPARATOR . $namespace . '.php', 'invalid content'); $model = new Filesystem(array('dir' => $this->_invalidPath)); + ob_start(); // hide "invalid content", when file gets included $this->assertEquals($model->getValue($namespace), '', 'empty default value returned, invalid content ignored'); + ob_end_clean(); $this->assertTrue($model->setValue(VALID, $namespace), 'setting valid value'); $this->assertEquals($model->getValue($namespace), VALID, 'valid value returned'); }