Просмотр исходного кода

Merge pull request #1545 from PrivateBin/fixes

Fixes for zlib caching & handling undefined globals
El RIDO 1 год назад
Родитель
Сommit
964b4da50a
9 измененных файлов с 30 добавлено и 10 удалено
  1. 2 0
      CHANGELOG.md
  2. 1 1
      js/common.js
  3. 0 0
      js/zlib-1.3.1-1.js
  4. 1 1
      lib/Configuration.php
  5. 9 5
      lib/Data/Filesystem.php
  6. 1 1
      tpl/bootstrap.php
  7. 1 1
      tpl/bootstrap5.php
  8. 1 1
      tpl/page.php
  9. 14 0
      tst/Data/FilesystemTest.php

+ 2 - 0
CHANGELOG.md

@@ -8,6 +8,8 @@
 * CHANGED: Support for multiple file uploads (#1060)
 * CHANGED: Documented CSP change necessary to allow PDF attachment preview (#1552)
 * FIXED: Hide Reply button in the discussions once clicked to avoid losing the text input (#1508)
+* 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)

+ 1 - 1
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;

+ 0 - 0
js/zlib-1.3.1.js → js/zlib-1.3.1-1.js


+ 1 - 1
lib/Configuration.php

@@ -123,7 +123,7 @@ class Configuration
             'js/purify-3.2.6.js'     => 'sha512-zqwL4OoBLFx89QPewkz4Lz5CSA2ktU+f31fuECkF0iK3Id5qd3Zpq5dMby8KwHjIEpsUgOqwF58cnmcaNem0EA==',
             '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==',
         ),
     );
 

+ 9 - 5
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',
-                    '<?php' . PHP_EOL . '$GLOBALS[\'purge_limiter\'] = ' . $value . ';'
+                    '<?php' . PHP_EOL . '$GLOBALS[\'purge_limiter\'] = ' . var_export($value, true) . ';'
                 );
             case 'salt':
                 return $this->_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;

+ 1 - 1
tpl/bootstrap.php

@@ -55,7 +55,7 @@ if ($ZEROBINCOMPATIBILITY) :
 <?php
 endif;
 ?>
-		<?php $this->_scriptTag('js/zlib-1.3.1.js', 'async'); ?>
+		<?php $this->_scriptTag('js/zlib-1.3.1-1.js', 'async'); ?>
 		<?php $this->_scriptTag('js/base-x-4.0.0.js', 'defer'); ?>
 		<?php $this->_scriptTag('js/rawinflate-0.3.js', 'defer'); ?>
 		<?php $this->_scriptTag('js/bootstrap-3.4.1.js', 'defer'); ?>

+ 1 - 1
tpl/bootstrap5.php

@@ -38,7 +38,7 @@ if ($ZEROBINCOMPATIBILITY) :
 <?php
 endif;
 ?>
-		<?php $this->_scriptTag('js/zlib-1.3.1.js', 'defer'); ?>
+		<?php $this->_scriptTag('js/zlib-1.3.1-1.js', 'defer'); ?>
 		<?php $this->_scriptTag('js/base-x-4.0.0.js', 'defer'); ?>
 		<?php $this->_scriptTag('js/rawinflate-0.3.js', 'defer'); ?>
 		<?php $this->_scriptTag('js/bootstrap-5.3.3.js', 'async'); ?>

+ 1 - 1
tpl/page.php

@@ -34,7 +34,7 @@ if ($ZEROBINCOMPATIBILITY):
 <?php
 endif;
 ?>
-		<?php $this->_scriptTag('js/zlib-1.3.1.js', 'async'); ?>
+		<?php $this->_scriptTag('js/zlib-1.3.1-1.js', 'async'); ?>
 		<?php $this->_scriptTag('js/base-x-4.0.0.js', 'async'); ?>
 		<?php $this->_scriptTag('js/rawinflate-0.3.js', 'async'); ?>
 <?php

+ 14 - 0
tst/Data/FilesystemTest.php

@@ -178,4 +178,18 @@ 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));
+            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');
+        }
+    }
 }