Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package liferea for openSUSE:Factory checked in at 2026-06-17 16:27:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/liferea (Old) and /work/SRC/openSUSE:Factory/.liferea.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liferea" Wed Jun 17 16:27:44 2026 rev:21 rq:1360018 version:1.16.12 Changes: -------- --- /work/SRC/openSUSE:Factory/liferea/liferea.changes 2026-05-30 22:57:50.103533832 +0200 +++ /work/SRC/openSUSE:Factory/.liferea.new.1981/liferea.changes 2026-06-17 16:29:08.986206239 +0200 @@ -1,0 +2,39 @@ +Wed Jun 17 09:09:05 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 1.16.12: + + This is a security bugfix release. + + Fixes a RCE vulnerability when importing OPML files containing + script commands. Now script commands from untrusted OPML files + are always dropped. + + Fixes a RCE vulnerability in the download manager plugin where + a command could have been injected into file paths. + +------------------------------------------------------------------- +Fri Jun 12 07:04:25 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 1.16.11: + + This is a security bugfix. Please urgently upgrade if you use + Liferea with Reedah or TheOldReader sync! + + If you use TinyTinyRSS sync please upgrade to fix a synching + issue. Security Issue with Reedah + TheOldReader sync support. + + Sadly there is a long-standing security bug causing unencrypted + connections when fetching feed content for those two backends. + When doing such requests via http:// your auth token got + exposed and could allow malicious 3rd parties to manipulate + your Reedah / TheOldReader accounts. + + Note: the login request itself (including) your password was + not affected, still I advise to upgrade to the newest Liferea + release 1.16.11 or 2.0-RC3 verify your Reedah / TheOldReader + subscriptions change your Reedah / TheOldReader password just + to be safe. + + Changes: + - Fixes a long-standing security bug that caused unencrypted + connection when fetching feed content from Reedah and + TheOldReader. Please upgrade and change your Reedah / + TheOldReader password afterwards! + - Fixes: TinyTinyRSS not working anymore due to + Content-Encoding header not indicating JSON + - Fixes: replace outdated feedburner URL in default feed list + OPML + +------------------------------------------------------------------- Old: ---- liferea-1.16.10.tar.xz New: ---- liferea-1.16.12.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ liferea.spec ++++++ --- /var/tmp/diff_new_pack.nvgZxi/_old 2026-06-17 16:29:10.122253536 +0200 +++ /var/tmp/diff_new_pack.nvgZxi/_new 2026-06-17 16:29:10.126253702 +0200 @@ -17,7 +17,7 @@ Name: liferea -Version: 1.16.10 +Version: 1.16.12 Release: 0 Summary: Linux Feed Reader License: GPL-2.0-only ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.nvgZxi/_old 2026-06-17 16:29:10.174255700 +0200 +++ /var/tmp/diff_new_pack.nvgZxi/_new 2026-06-17 16:29:10.182256034 +0200 @@ -1,5 +1,5 @@ -mtime: 1779781721 -commit: d062e45e54b230ecc88a830ea7b262bffb350cd7e7ce52cb9713c3bde647e151 +mtime: 1781687490 +commit: a090a0d212f11dd3a8a4e15f634a471cc129343c983e243f35b0f6fbaed330da url: https://src.opensuse.org/GNOME/liferea revision: factory ++++++ _service ++++++ --- /var/tmp/diff_new_pack.nvgZxi/_old 2026-06-17 16:29:10.210257200 +0200 +++ /var/tmp/diff_new_pack.nvgZxi/_new 2026-06-17 16:29:10.218257532 +0200 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/lwindolf/liferea.git</param> - <param name="revision">v1.16.10</param> + <param name="revision">v1.16.12</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">v?(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-06-17 11:11:30.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild ++++++ liferea-1.16.10.tar.xz -> liferea-1.16.12.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/ChangeLog new/liferea-1.16.12/ChangeLog --- old/liferea-1.16.10/ChangeLog 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/ChangeLog 2026-06-17 00:00:52.000000000 +0200 @@ -1,3 +1,34 @@ +2026-06-16 Lars Windolf <[email protected]> + + Version 1.16.12 + + * Fixes a RCE vulnerability when importing OPML files containing + script commands. Now script commands from untrusted OPML files are + always dropped. + (reported by Laurence Tennant) + + * Fixes a RCE vulnerability in the download manager plugin where + a command could have been injected into file paths. + (reported by Laurence Tennant) + + +2026-06-10 Lars Windolf <[email protected]> + + Version 1.16.11 + + * Fixes a long-standing security bug that caused unencrypted connection + when fetching feed content from Reedah and TheOldReader. Please upgrade + and change your Reedah / TheOldReader password afterwards! + (Lars Windolf) + + * Fixes #1528: TinyTinyRSS not working anymore due to Content-Encoding + header not indicating JSON + (Lars Windolf) + + * Fixes #1523: replace outdated feedburner URL in default feed list OPML + (Lars Windolf) + + 2026-05-25 Lars Windolf <[email protected]> Version 1.16.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/configure.ac new/liferea-1.16.12/configure.ac --- old/liferea-1.16.10/configure.ac 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/configure.ac 2026-06-17 00:00:52.000000000 +0200 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([liferea],[1.16.10]) +AC_INIT([liferea],[1.16.12]) AC_CANONICAL_HOST AC_CONFIG_SRCDIR([src/feedlist.c]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_bg.opml new/liferea-1.16.12/opml/feedlist_bg.opml --- old/liferea-1.16.10/opml/feedlist_bg.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_bg.opml 2026-06-17 00:00:52.000000000 +0200 @@ -19,7 +19,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_ca.opml new/liferea-1.16.12/opml/feedlist_ca.opml --- old/liferea-1.16.10/opml/feedlist_ca.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_ca.opml 2026-06-17 00:00:52.000000000 +0200 @@ -24,7 +24,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_de.opml new/liferea-1.16.12/opml/feedlist_de.opml --- old/liferea-1.16.10/opml/feedlist_de.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_de.opml 2026-06-17 00:00:52.000000000 +0200 @@ -26,7 +26,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_en.opml new/liferea-1.16.12/opml/feedlist_en.opml --- old/liferea-1.16.10/opml/feedlist_en.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_en.opml 2026-06-17 00:00:52.000000000 +0200 @@ -17,7 +17,7 @@ <outline text="Quanta Magazine" htmlUrl="https://api.quantamagazine.org/" xmlUrl="https://api.quantamagazine.org/feed/"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_es.opml new/liferea-1.16.12/opml/feedlist_es.opml --- old/liferea-1.16.10/opml/feedlist_es.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_es.opml 2026-06-17 00:00:52.000000000 +0200 @@ -22,7 +22,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="http://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_eu.opml new/liferea-1.16.12/opml/feedlist_eu.opml --- old/liferea-1.16.10/opml/feedlist_eu.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_eu.opml 2026-06-17 00:00:52.000000000 +0200 @@ -24,7 +24,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Software librea"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcast eta musika"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_fa.opml new/liferea-1.16.12/opml/feedlist_fa.opml --- old/liferea-1.16.10/opml/feedlist_fa.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_fa.opml 2026-06-17 00:00:52.000000000 +0200 @@ -20,7 +20,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_fr.opml new/liferea-1.16.12/opml/feedlist_fr.opml --- old/liferea-1.16.10/opml/feedlist_fr.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_fr.opml 2026-06-17 00:00:52.000000000 +0200 @@ -24,7 +24,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_gl.opml new/liferea-1.16.12/opml/feedlist_gl.opml --- old/liferea-1.16.10/opml/feedlist_gl.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_gl.opml 2026-06-17 00:00:52.000000000 +0200 @@ -19,7 +19,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_he.opml new/liferea-1.16.12/opml/feedlist_he.opml --- old/liferea-1.16.10/opml/feedlist_he.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_he.opml 2026-06-17 00:00:52.000000000 +0200 @@ -35,7 +35,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="קוד פתוח"> <!-- translate this for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_hu.opml new/liferea-1.16.12/opml/feedlist_hu.opml --- old/liferea-1.16.10/opml/feedlist_hu.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_hu.opml 2026-06-17 00:00:52.000000000 +0200 @@ -12,7 +12,7 @@ <outline text="HWSW" htmlUrl="https://www.hwsw.hu/" xmlUrl="https://www.hwsw.hu/xml/latest_news_rss.xml" /> </outline> <outline text="Nyílt forrás"> <!-- translate this for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> <outline text="HUP" htmlUrl="https://hup.hu/" xmlUrl="http://feeds.feedburner.com/HUP" /> <outline text="FSF.hu alapítvány" htmlUrl="https://fsf.hu/blog/" xmlUrl="https://fsf.hu/blog/feed/atom/" /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_id.opml new/liferea-1.16.12/opml/feedlist_id.opml --- old/liferea-1.16.10/opml/feedlist_id.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_id.opml 2026-06-17 00:00:52.000000000 +0200 @@ -13,7 +13,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Sumber Terbuka"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_it.opml new/liferea-1.16.12/opml/feedlist_it.opml --- old/liferea-1.16.10/opml/feedlist_it.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_it.opml 2026-06-17 00:00:52.000000000 +0200 @@ -25,7 +25,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcast"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_nl.opml new/liferea-1.16.12/opml/feedlist_nl.opml --- old/liferea-1.16.10/opml/feedlist_nl.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_nl.opml 2026-06-17 00:00:52.000000000 +0200 @@ -13,7 +13,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_no.opml new/liferea-1.16.12/opml/feedlist_no.opml --- old/liferea-1.16.10/opml/feedlist_no.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_no.opml 2026-06-17 00:00:52.000000000 +0200 @@ -25,7 +25,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Fri programvare"> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podkast og musikk"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_pl.opml new/liferea-1.16.12/opml/feedlist_pl.opml --- old/liferea-1.16.10/opml/feedlist_pl.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_pl.opml 2026-06-17 00:00:52.000000000 +0200 @@ -25,7 +25,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_pt.opml new/liferea-1.16.12/opml/feedlist_pt.opml --- old/liferea-1.16.10/opml/feedlist_pt.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_pt.opml 2026-06-17 00:00:52.000000000 +0200 @@ -31,7 +31,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_pt_BR.opml new/liferea-1.16.12/opml/feedlist_pt_BR.opml --- old/liferea-1.16.10/opml/feedlist_pt_BR.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_pt_BR.opml 2026-06-17 00:00:52.000000000 +0200 @@ -30,7 +30,7 @@ <outline text="Quanta Magazine" htmlUrl="https://api.quantamagazine.org/" xmlUrl="https://api.quantamagazine.org/feed/"/> </outline> <outline text="Software Livre"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_sk.opml new/liferea-1.16.12/opml/feedlist_sk.opml --- old/liferea-1.16.10/opml/feedlist_sk.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_sk.opml 2026-06-17 00:00:52.000000000 +0200 @@ -15,7 +15,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/opml/feedlist_sv.opml new/liferea-1.16.12/opml/feedlist_sv.opml --- old/liferea-1.16.10/opml/feedlist_sv.opml 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/opml/feedlist_sv.opml 2026-06-17 00:00:52.000000000 +0200 @@ -22,7 +22,7 @@ <outline text="Science" htmlUrl="https://www.sciencenews.org/" xmlUrl="https://www.sciencenews.org/feed"/> </outline> <outline text="Open Source"> <!-- translate this title for localized feed list --> - <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://feeds.feedburner.com/LifereaBlog" /> + <outline text="Liferea Blog" htmlUrl="https://lzone.de/liferea/blog/" xmlUrl="https://lzone.de/feed/liferea.xml" /> <outline text="Planet GNOME" htmlUrl="https://planet.gnome.org/" xmlUrl="https://planet.gnome.org/rss20.xml" /> </outline> <outline text="Podcasts & Music"> <!-- translate this title for localized feed list --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/plugins/download-manager.py new/liferea-1.16.12/plugins/download-manager.py --- old/liferea-1.16.10/plugins/download-manager.py 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/plugins/download-manager.py 2026-06-17 00:00:52.000000000 +0200 @@ -1,7 +1,7 @@ """ Download Manager Plugin -Copyright (C) 2024 Lars Windolf <[email protected]> +Copyright (C) 2024-2026 Lars Windolf <[email protected]> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -22,6 +22,7 @@ import gi import os import time +import subprocess gi.require_version('Gtk', '3.0') @@ -137,7 +138,7 @@ dialog.destroy() def on_open_file(self, button, download): - os.system(f"xdg-open {download.get('filename')}") + subprocess.run(["xdg-open", download.get('filename')]) # Ideas: # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/export.c new/liferea-1.16.12/src/export.c --- old/liferea-1.16.10/src/export.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/export.c 2026-06-17 00:00:52.000000000 +0200 @@ -205,6 +205,14 @@ if (tmp) { debug (DEBUG_CACHE, "-> URL found assuming type feed"); + + /* Security check, avoid RCE using commands on untrusted OPML */ + if (!trusted && tmp[0] == '|') { + debug (DEBUG_CACHE, "-> Unsafe command found in untrusted OPML, skipping: %s", tmp); + xmlFree (tmp); + return; + } + type = g_strdup ("feed"); xmlFree (tmp); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/net.c new/liferea-1.16.12/src/net.c --- old/liferea-1.16.10/src/net.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/net.c 2026-06-17 00:00:52.000000000 +0200 @@ -186,7 +186,7 @@ g_assert (NULL != job->request); debug (DEBUG_NET, "downloading %s", job->request->source); if (job->request->postdata && (debug_get_flags () & DEBUG_NET)) - debug (DEBUG_NET, " postdata=>>>%s<<<", job->request->postdata); + debug (DEBUG_NET, " postdata=>>>%s<<< (content type: %s)", job->request->postdata, job->request->contentType?job->request->contentType:"NULL"); /* Do not process request on HTTP 429 */ g_autoptr(GUri) uri = g_uri_parse (job->request->source, G_URI_FLAGS_NONE, NULL); @@ -245,7 +245,7 @@ if (job->request->postdata) { g_autoptr(GBytes) postdata = g_bytes_new (job->request->postdata, strlen (job->request->postdata)); soup_message_set_request_body_from_bytes (msg, - "application/x-www-form-urlencoded", + job->request->contentType?job->request->contentType:"application/x-www-form-urlencoded", postdata); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/reedah_source.c new/liferea-1.16.12/src/node_sources/reedah_source.c --- old/liferea-1.16.10/src/node_sources/reedah_source.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/reedah_source.c 2026-06-17 00:00:52.000000000 +0200 @@ -1,7 +1,7 @@ /** * @file reedah_source.c Reedah source support * - * Copyright (C) 2007-2024 Lars Windolf <[email protected]> + * Copyright (C) 2007-2026 Lars Windolf <[email protected]> * Copyright (C) 2008 Arnold Noronha <[email protected]> * Copyright (C) 2011 Peter Oliver * Copyright (C) 2011 Sergey Snitsaruk <[email protected]> @@ -47,7 +47,7 @@ /** default Reedah subscription list update interval = once a day */ #define NODE_SOURCE_UPDATE_INTERVAL (guint64)(60*60*24) * (guint64)G_USEC_PER_SEC -#define BASE_URL "http://www.reedah.com/reader/api/0/" +#define BASE_URL "https://www.reedah.com/reader/api/0/" #define SOURCE_ID "fl_reedah" @@ -257,7 +257,7 @@ { if (response_id == GTK_RESPONSE_OK) { Node *node = node_new ("node_source"); - node_source_new (node, SOURCE_ID, "http://www.reedah.com/reader"); + node_source_new (node, SOURCE_ID, "https://www.reedah.com/reader"); node_set_title (node, node->source->type->name); subscription_set_auth_info (node->subscription, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/reedah_source.h new/liferea-1.16.12/src/node_sources/reedah_source.h --- old/liferea-1.16.10/src/node_sources/reedah_source.h 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/reedah_source.h 2026-06-17 00:00:52.000000000 +0200 @@ -58,7 +58,7 @@ * Authorization header in future requests. */ #define REEDAH_READER_LOGIN_URL "https://www.reedah.com/accounts/ClientLogin" -#define REEDAH_READER_LOGIN_POST "service=reader&Email=%s&Passwd=%s&source=liferea&continue=http://www.reedah.com" +#define REEDAH_READER_LOGIN_POST "service=reader&Email=%s&Passwd=%s&source=liferea&continue=https://www.reedah.com" /** Interval (in micro seconds) for doing a Quick Update: 10min */ #define REEDAH_SOURCE_QUICK_UPDATE_INTERVAL 600 * G_USEC_PER_SEC diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/reedah_source_feed.c new/liferea-1.16.12/src/node_sources/reedah_source_feed.c --- old/liferea-1.16.10/src/node_sources/reedah_source_feed.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/reedah_source_feed.c 2026-06-17 00:00:52.000000000 +0200 @@ -180,7 +180,7 @@ gchar* source_escaped = g_uri_escape_string(metadata_list_get (subscription->metadata, "reedah-feed-id"), NULL, TRUE); // FIXME: move to .h // FIXME: do not use hard-coded 30 - gchar* newUrl = g_strdup_printf ("http://www.reedah.com/reader/api/0/stream/contents/%s?client=liferea&n=30", source_escaped); + gchar* newUrl = g_strdup_printf ("https://www.reedah.com/reader/api/0/stream/contents/%s?client=liferea&n=30", source_escaped); update_request_set_source (request, newUrl); g_free (newUrl); g_free (source_escaped); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/theoldreader_source.c new/liferea-1.16.12/src/node_sources/theoldreader_source.c --- old/liferea-1.16.10/src/node_sources/theoldreader_source.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/theoldreader_source.c 2026-06-17 00:00:52.000000000 +0200 @@ -1,7 +1,7 @@ /** * @file theoldreader_source.c TheOldReader feed list source support * - * Copyright (C) 2007-2024 Lars Windolf <[email protected]> + * Copyright (C) 2007-2026 Lars Windolf <[email protected]> * Copyright (C) 2008 Arnold Noronha <[email protected]> * Copyright (C) 2011 Peter Oliver * Copyright (C) 2011 Sergey Snitsaruk <[email protected]> @@ -261,7 +261,7 @@ { if (response_id == GTK_RESPONSE_OK) { Node *node = node_new ("node_source"); - node_source_new (node, SOURCE_ID, "http://theoldreader.com/reader"); + node_source_new (node, SOURCE_ID, "https://theoldreader.com/reader"); node_set_title (node, node->source->type->name); subscription_set_auth_info (node->subscription, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/theoldreader_source.h new/liferea-1.16.12/src/node_sources/theoldreader_source.h --- old/liferea-1.16.10/src/node_sources/theoldreader_source.h 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/theoldreader_source.h 2026-06-17 00:00:52.000000000 +0200 @@ -1,7 +1,7 @@ /** * @file theoldreader_source.h TheOldReader feed list source support * - * Copyright (C) 2007-2025 Lars Windolf <[email protected]> + * Copyright (C) 2007-2026 Lars Windolf <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -53,7 +53,7 @@ * Authorization header in future requests. */ #define THEOLDREADER_READER_LOGIN_URL "https://theoldreader.com/accounts/ClientLogin" -#define THEOLDREADER_READER_LOGIN_POST "service=reader&Email=%s&Passwd=%s&source=liferea&continue=http://theoldreader.com" +#define THEOLDREADER_READER_LOGIN_POST "service=reader&Email=%s&Passwd=%s&source=liferea&continue=https://theoldreader.com" void theoldreader_source_register (void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/theoldreader_source_feed.c new/liferea-1.16.12/src/node_sources/theoldreader_source_feed.c --- old/liferea-1.16.10/src/node_sources/theoldreader_source_feed.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/theoldreader_source_feed.c 2026-06-17 00:00:52.000000000 +0200 @@ -2,7 +2,7 @@ * @file theoldreader_source_feed.c TheOldReader feed subscription routines * * Copyright (C) 2008 Arnold Noronha <[email protected]> - * Copyright (C) 2014-2022 Lars Windolf <[email protected]> + * Copyright (C) 2014-2026 Lars Windolf <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -210,7 +210,7 @@ return FALSE; } - gchar* url = g_strdup_printf ("http://theoldreader.com/reader/atom/%s", metadata_list_get (subscription->metadata, "theoldreader-feed-id")); + gchar* url = g_strdup_printf ("https://theoldreader.com/reader/atom/%s", metadata_list_get (subscription->metadata, "theoldreader-feed-id")); update_request_set_source (request, url); g_free (url); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/ttrss_source.c new/liferea-1.16.12/src/node_sources/ttrss_source.c --- old/liferea-1.16.10/src/node_sources/ttrss_source.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/ttrss_source.c 2026-06-17 00:00:52.000000000 +0200 @@ -142,7 +142,7 @@ void ttrss_source_login (ttrssSourcePtr source, guint32 flags) { - gchar *username, *password, *source_uri; + gchar *username, *password; UpdateRequest *request; subscriptionPtr subscription = source->root->subscription; @@ -157,21 +157,19 @@ return; } - source_uri = g_strdup_printf (TTRSS_URL, source->url); - + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, NULL, // updateState subscription->updateOptions ); - g_free (source_uri); - /* escape user and password for JSON call */ username = g_strescape (subscription->updateOptions->username, NULL); password = g_strescape (subscription->updateOptions->password, NULL); - request->postdata = g_strdup_printf (TTRSS_JSON_LOGIN, username, password); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_LOGIN, username, password); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); g_free (username); g_free (password); @@ -241,7 +239,6 @@ ttrssSourcePtr source = (ttrssSourcePtr)root->data; UpdateRequest *request; gint categoryId = 0; - gchar *source_uri; /* Determine correct category from selected folder name */ parent = feedlist_get_selected (); @@ -251,21 +248,19 @@ categoryId = GPOINTER_TO_INT (g_hash_table_lookup (source->folderToCategory, parent->id)); } - source_uri = g_strdup_printf (TTRSS_URL, source->url); - + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, NULL, root->subscription->updateOptions ); - g_free (source_uri); - /* escape user and password for JSON call */ username = g_strescape (root->subscription->updateOptions->username, NULL); password = g_strescape (root->subscription->updateOptions->password, NULL); - request->postdata = g_strdup_printf (TTRSS_JSON_SUBSCRIBE, source->session_id, subscription->source, categoryId, username, password); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_SUBSCRIBE, source->session_id, subscription->source, categoryId, username, password); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); g_free (username); g_free (password); @@ -303,7 +298,6 @@ ttrssSourcePtr source = (ttrssSourcePtr)root->data; UpdateRequest *request; const gchar *id; - gchar *source_uri; // FIXME: Check for login? @@ -318,17 +312,15 @@ return; } - source_uri = g_strdup_printf (TTRSS_URL, source->url); - + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, NULL, root->subscription->updateOptions ); - g_free (source_uri); - - request->postdata = g_strdup_printf (TTRSS_JSON_UNSUBSCRIBE, source->session_id, id); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_UNSUBSCRIBE, source->session_id, id); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); update_job_new (source, request, ttrss_source_remove_node_cb, node, 0 /* flags */); } @@ -399,19 +391,16 @@ Node *root = node_source_root_from_node (node); ttrssSourcePtr source = (ttrssSourcePtr)root->data; UpdateRequest *request; - gchar *source_uri; - - source_uri = g_strdup_printf (TTRSS_URL, source->url); + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, NULL, root->subscription->updateOptions ); - g_free (source_uri); - - request->postdata = g_strdup_printf (TTRSS_JSON_UPDATE_ITEM_FLAG, source->session_id, item_get_id(item), newStatus?1:0 ); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_UPDATE_ITEM_FLAG, source->session_id, item_get_id(item), newStatus?1:0 ); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); update_job_new (source, request, ttrss_source_remote_update_cb, source, 0 /* flags */); @@ -424,18 +413,16 @@ Node *root = node_source_root_from_node (node); ttrssSourcePtr source = (ttrssSourcePtr)root->data; UpdateRequest *request; - gchar *source_uri; - - source_uri = g_strdup_printf (TTRSS_URL, source->url); + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, NULL, root->subscription->updateOptions ); - g_free (source_uri); - request->postdata = g_strdup_printf (TTRSS_JSON_UPDATE_ITEM_UNREAD, source->session_id, item_get_id(item), newStatus?0:1 ); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_UPDATE_ITEM_UNREAD, source->session_id, item_get_id(item), newStatus?0:1); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); update_job_new (source, request, ttrss_source_remote_update_cb, source, 0 /* flags */); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/ttrss_source_feed.c new/liferea-1.16.12/src/node_sources/ttrss_source_feed.c --- old/liferea-1.16.10/src/node_sources/ttrss_source_feed.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/ttrss_source_feed.c 2026-06-17 00:00:52.000000000 +0200 @@ -1,7 +1,7 @@ /** * @file ttrss_source_feed.c Tiny Tiny RSS feed subscription routines * - * Copyright (C) 2010-2024 Lars Windolf <[email protected]> + * Copyright (C) 2010-2026 Lars Windolf <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -164,7 +164,6 @@ Node *root = node_source_root_from_node (subscription->node); ttrssSourcePtr source = (ttrssSourcePtr) root->data; const gchar *feed_id; - gchar *source_name; gint fetchCount; debug (DEBUG_UPDATE, "TinyTinyRSS preparing feed subscription for update"); @@ -185,10 +184,10 @@ /* We can always max out as TinyTinyRSS does limit results itself */ fetchCount = subscription_get_max_item_count (subscription); - request->postdata = g_strdup_printf (TTRSS_JSON_HEADLINES, source->session_id, feed_id, fetchCount); - source_name = g_strdup_printf (TTRSS_URL, source->url); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_HEADLINES, source->session_id, feed_id, fetchCount); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); + g_autofree gchar *source_name = g_strdup_printf (TTRSS_URL, source->url); update_request_set_source (request, source_name); - g_free (source_name); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/node_sources/ttrss_source_feed_list.c new/liferea-1.16.12/src/node_sources/ttrss_source_feed_list.c --- old/liferea-1.16.10/src/node_sources/ttrss_source_feed_list.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/node_sources/ttrss_source_feed_list.c 2026-06-17 00:00:52.000000000 +0200 @@ -209,19 +209,16 @@ ttrss_source_update_subscription_list (ttrssSourcePtr source, subscriptionPtr subscription) { UpdateRequest *request; - gchar *source_uri; - - source_uri = g_strdup_printf (TTRSS_URL, source->url); + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); request = update_request_new ( source_uri, subscription->updateState, subscription->updateOptions ); - g_free (source_uri); - - request->postdata = g_strdup_printf (TTRSS_JSON_SUBSCRIPTION_LIST, source->session_id); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_SUBSCRIPTION_LIST, source->session_id); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); subscription->updateJob = update_job_new (subscription, request, ttrss_source_subscription_list_cb, subscription, UPDATE_REQUEST_NO_FEED); } @@ -362,7 +359,6 @@ { Node *node = subscription->node; ttrssSourcePtr source = (ttrssSourcePtr) subscription->node->data; - gchar *source_uri; debug (DEBUG_UPDATE, "ttrss_subscription_prepare_update_request"); @@ -379,10 +375,10 @@ installation is not self-updating to run a remote update for each feed before fetching it's items */ - source_uri = g_strdup_printf (TTRSS_URL, source->url); + g_autofree gchar *source_uri = g_strdup_printf (TTRSS_URL, source->url); update_request_set_source (request, source_uri); - g_free (source_uri); - request->postdata = g_strdup_printf (TTRSS_JSON_CATEGORIES_LIST, source->session_id); + g_autofree gchar *postdata = g_strdup_printf (TTRSS_JSON_CATEGORIES_LIST, source->session_id); + update_request_set_postdata (request, postdata, "application/json; charset=utf-8"); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/update.c new/liferea-1.16.12/src/update.c --- old/liferea-1.16.10/src/update.c 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/update.c 2026-06-17 00:00:52.000000000 +0200 @@ -191,26 +191,34 @@ } void -update_request_set_source(UpdateRequest *request, const gchar* source) +update_request_set_source(UpdateRequest *request, const gchar *source) { g_free (request->source); request->source = g_strdup (source); } void -update_request_set_auth_value (UpdateRequest *request, const gchar* authValue) +update_request_set_auth_value (UpdateRequest *request, const gchar *authValue) { g_free (request->authValue); request->authValue = g_strdup (authValue); } void +update_request_set_postdata (UpdateRequest *request, const gchar *postdata, const gchar *contentType) +{ + g_free (request->postdata); + request->postdata = g_strdup (postdata); + g_free (request->contentType); + request->contentType = contentType?g_strdup (contentType):NULL; +} + +void update_request_allow_commands (UpdateRequest *request, gboolean allowCommands) { request->allowCommands = allowCommands; } - /* update result */ G_DEFINE_TYPE (UpdateResult, update_result, G_TYPE_OBJECT) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liferea-1.16.10/src/update.h new/liferea-1.16.12/src/update.h --- old/liferea-1.16.10/src/update.h 2026-05-25 18:49:20.000000000 +0200 +++ new/liferea-1.16.12/src/update.h 2026-06-17 00:00:52.000000000 +0200 @@ -78,6 +78,7 @@ then it is parsed as a URL, otherwise it is a filename. */ gchar *postdata; /*<< HTTP POST request data (NULL for non-POST requests) */ + gchar *contentType; /*<< HTTP request content type (optional) */ gchar *authValue; /*<< Custom value for Authorization: header */ updateOptionsPtr options; /*<< Update options for the request */ gchar *filtercmd; /*<< Command will filter output of URL */ @@ -178,6 +179,16 @@ */ void update_request_set_auth_value (UpdateRequest *request, const gchar* authValue); +/** + * update_request_set_postdata: + * @request: the update request + * @postdata: the data to be sent in an HTTP POST request + * @contentType: the content type of the request (e.g. "application/json") + * + * Sets the data and optional content type for a HTTP POST request. + */ +void update_request_set_postdata (UpdateRequest *request, const gchar* postdata, const gchar* contentType); + /** * update_request_allow_commands: * @request: the update request ++++++ liferea.obsinfo ++++++ --- /var/tmp/diff_new_pack.nvgZxi/_old 2026-06-17 16:29:11.034291507 +0200 +++ /var/tmp/diff_new_pack.nvgZxi/_new 2026-06-17 16:29:11.042291839 +0200 @@ -1,5 +1,5 @@ name: liferea -version: 1.16.10 -mtime: 1779727760 -commit: 3a6096c2ce47db742931668dcddf215416292aa1 +version: 1.16.12 +mtime: 1781647252 +commit: 068c12bbba396ed357078f9c3d69f495467f3827
