From fe082e7537abe7081d457d800aa1bfeac282d3b6 Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Tue, 30 Jun 2020 16:44:42 +0000 Subject: [PATCH] Escape illegal characters in XML (#82) --- src/util.cr | 10 ++++++++++ src/views/opds/index.xml.ecr | 2 +- src/views/opds/title.xml.ecr | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/util.cr b/src/util.cr index c9dfa2b..57d0e9b 100644 --- a/src/util.cr +++ b/src/util.cr @@ -154,3 +154,13 @@ def ctime(file_path : String) : Time Time.new stat.st_ctim, Time::Location::UTC {% end %} end + +def escape_xml(str) + str.gsub({ + '>' => ">", + '<' => "<", + '"' => """, + '\'' => "'", + '&' => "&", + }) +end diff --git a/src/views/opds/index.xml.ecr b/src/views/opds/index.xml.ecr index 2d84b63..ef9e717 100644 --- a/src/views/opds/index.xml.ecr +++ b/src/views/opds/index.xml.ecr @@ -14,7 +14,7 @@ <% titles.each do |t| %> - <%= t.display_name %> + <%= escape_xml(t.display_name) %> urn:mango:<%= t.id %> diff --git a/src/views/opds/title.xml.ecr b/src/views/opds/title.xml.ecr index 80eadfa..3aec8b7 100644 --- a/src/views/opds/title.xml.ecr +++ b/src/views/opds/title.xml.ecr @@ -5,7 +5,7 @@ - <%= title.display_name %> + <%= escape_xml(title.display_name) %> Mango @@ -14,7 +14,7 @@ <% title.titles.each do |t| %> - <%= t.display_name %> + <%= escape_xml(t.display_name) %> urn:mango:<%= t.id %> @@ -22,7 +22,7 @@ <% title.entries.each do |e| %> - <%= e.display_name %> + <%= escape_xml(e.display_name) %> urn:mango:<%= e.id %>