aboutsummaryrefslogtreecommitdiff
path: root/classes/Feeds.php
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-07-07 07:38:21 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-07-07 07:38:21 +0300
commitda4b886f085fdc77c5e6d4c2543578f7b1c2041a (patch)
tree87c3df624b1f3e71500b6109645d491faf310d6e /classes/Feeds.php
parent46e05583a991f2d3355cbd062d9932ccee1ea25a (diff)
parent0cd788220d9e261d5bb540dab05cf58b55d94109 (diff)
Merge branch 'feature/feedparser-tweaks' into 'master'
Disallow subscribing if feed content is invalid See merge request tt-rss/tt-rss!163
Diffstat (limited to 'classes/Feeds.php')
-rw-r--r--classes/Feeds.php7
1 files changed, 6 insertions, 1 deletions
diff --git a/classes/Feeds.php b/classes/Feeds.php
index 1900b40f1..e76044060 100644
--- a/classes/Feeds.php
+++ b/classes/Feeds.php
@@ -999,7 +999,7 @@ class Feeds extends Handler_Protected {
* Here you should call extractfeedurls in rpc-backend
* to get all possible feeds.
* 5 - Couldn't download the URL content.
- * 6 - currently unused
+ * 6 - Feed parsing failure (invalid content)
* 7 - Error while creating feed database entry.
* 8 - Permission denied (ACCESS_LEVEL_READONLY).
*/
@@ -1059,6 +1059,11 @@ class Feeds extends Handler_Protected {
$url = key($feedUrls);
}
+ // Don't allow subscribing if the content is invalid
+ $fp = new FeedParser($contents);
+ if ($fp->error() || $fp->get_type() === FeedParser::FEED_UNKNOWN)
+ return ['code' => 6, 'message' => truncate_string(clean($contents), 250, '…')];
+
$feed = ORM::for_table('ttrss_feeds')
->where('feed_url', $url)
->where('owner_uid', $_SESSION['uid'])