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

Fix regression XPath XML encoding (#7345)

* Fix regression XPath XML encoding
fix https://github.com/FreshRSS/FreshRSS/discussions/7325
The categories (tags) were not correctly XML-escaped due to being an array
https://github.com/FreshRSS/FreshRSS/pull/5305/files#r1964316119

* Improve typing
Alexandre Alapetite 1 год назад
Родитель
Сommit
a518ecb39e
1 измененных файлов с 6 добавлено и 3 удалено
  1. 6 3
      app/Models/Feed.php

+ 6 - 3
app/Models/Feed.php

@@ -886,11 +886,14 @@ class FreshRSS_Feed extends Minz_Model {
 
 				if ($item['title'] != '' || $item['content'] != '' || $item['link'] != '') {
 					// HTML-encoding/escaping of the relevant fields (all except 'content')
-					foreach (['author', 'guid', 'link', 'thumbnail', 'timestamp', 'tags', 'title'] as $key) {
-						if (!empty($item[$key]) && is_string($item[$key])) {
-							$item[$key] = Minz_Helper::htmlspecialchars_utf8($item[$key]);
+					foreach (['author', 'guid', 'link', 'thumbnail', 'timestamp', 'title'] as $key) {
+						if (isset($item[$key])) {
+							$item[$key] = htmlspecialchars($item[$key], ENT_COMPAT, 'UTF-8');
 						}
 					}
+					if (isset($item['tags'])) {
+						$item['tags'] = Minz_Helper::htmlspecialchars_utf8($item['tags']);
+					}
 					// CDATA protection
 					$item['content'] = str_replace(']]>', ']]>', $item['content']);
 					$view->entries[] = FreshRSS_Entry::fromArray($item);