Quellcode durchsuchen

Safer htmlspecialchars_utf8 (#4411)

* Safer htmlspecialchars_utf8
#fix https://github.com/FreshRSS/FreshRSS/issues/4410

* Undefined variable
Alexandre Alapetite vor 3 Jahren
Ursprung
Commit
ec11da4e84
3 geänderte Dateien mit 10 neuen und 3 gelöschten Zeilen
  1. 3 0
      app/Models/Context.php
  2. 3 2
      app/layout/header.phtml
  3. 4 1
      lib/Minz/Helper.php

+ 3 - 0
app/Models/Context.php

@@ -43,6 +43,7 @@ class FreshRSS_Context {
 	public static $state = 0;
 	public static $state = 0;
 	public static $order = 'DESC';
 	public static $order = 'DESC';
 	public static $number = 0;
 	public static $number = 0;
+	/** @var FreshRSS_BooleanSearch */
 	public static $search;
 	public static $search;
 	public static $first_id = '';
 	public static $first_id = '';
 	public static $next_id = '';
 	public static $next_id = '';
@@ -114,6 +115,8 @@ class FreshRSS_Context {
 			return false;
 			return false;
 		}
 		}
 
 
+		FreshRSS_Context::$search = new FreshRSS_BooleanSearch('');
+
 		//Legacy
 		//Legacy
 		$oldEntries = (int)FreshRSS_Context::$user_conf->param('old_entries', 0);
 		$oldEntries = (int)FreshRSS_Context::$user_conf->param('old_entries', 0);
 		$keepMin = (int)FreshRSS_Context::$user_conf->param('keep_history_default', -5);
 		$keepMin = (int)FreshRSS_Context::$user_conf->param('keep_history_default', -5);

+ 3 - 2
app/layout/header.phtml

@@ -15,8 +15,9 @@
 		<?php if (FreshRSS_Auth::hasAccess() || FreshRSS_Context::$system_conf->allow_anonymous) { ?>
 		<?php if (FreshRSS_Auth::hasAccess() || FreshRSS_Context::$system_conf->allow_anonymous) { ?>
 		<form action="<?= _url('index', 'index') ?>" method="get">
 		<form action="<?= _url('index', 'index') ?>" method="get">
 			<div class="stick">
 			<div class="stick">
-				<input type="search" name="search" id="search" class="extend" value="<?php
-					echo htmlspecialchars(htmlspecialchars_decode(FreshRSS_Context::$search, ENT_QUOTES), ENT_COMPAT, 'UTF-8'); ?>" placeholder="<?= _t('gen.menu.search') ?>" />
+				<input type="search" name="search" id="search" class="extend"
+					value="<?= htmlspecialchars(htmlspecialchars_decode(FreshRSS_Context::$search, ENT_QUOTES), ENT_COMPAT, 'UTF-8') ?>"
+					placeholder="<?= _t('gen.menu.search') ?>" />
 
 
 				<?php $get = Minz_Request::param('get', ''); ?>
 				<?php $get = Minz_Request::param('get', ''); ?>
 				<?php if ($get != '') { ?>
 				<?php if ($get != '') { ?>

+ 4 - 1
lib/Minz/Helper.php

@@ -16,7 +16,10 @@ class Minz_Helper {
 	public static function htmlspecialchars_utf8($var) {
 	public static function htmlspecialchars_utf8($var) {
 		if (is_array($var)) {
 		if (is_array($var)) {
 			return array_map(array('Minz_Helper', 'htmlspecialchars_utf8'), $var);
 			return array_map(array('Minz_Helper', 'htmlspecialchars_utf8'), $var);
+		} elseif (is_string($var)) {
+			return htmlspecialchars($var, ENT_COMPAT, 'UTF-8');
+		} else {
+			return $var;
 		}
 		}
-		return htmlspecialchars($var, ENT_COMPAT, 'UTF-8');
 	}
 	}
 }
 }