aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2018-02-28 09:40:45 +0000
committerSimon McVittie <smcv@debian.org>2018-02-28 09:55:53 +0000
commit0e5c8ae806283d31bcfaf63f5af361f97dbe91f0 (patch)
treecc1092757943956531dfc61a274245e3ba58ca4c
parent4d355918f0ee478c63084661e617ba44ddc360bb (diff)
downloadikiwiki-0e5c8ae806283d31bcfaf63f5af361f97dbe91f0.tar
ikiwiki-0e5c8ae806283d31bcfaf63f5af361f97dbe91f0.tar.gz
preprocess: Escape most ASCII punctuation in error messages
This is a minimal version of what we should in principle do here, which is to escape the error message in whatever way is correct for embedding plain text in the surrounding wiki markup language. This implementation approximates that by assuming that HTML entities, alphanumerics and common punctuation characters are passed through the markup language unaltered, but punctuation characters might be misinterpreted. Signed-off-by: Simon McVittie <smcv@debian.org>
-rw-r--r--IkiWiki.pm4
1 files changed, 4 insertions, 0 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 0d87242eb..7a38c8f89 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1668,6 +1668,10 @@ sub preprocess ($$$;$$) {
chomp $error;
eval q{use HTML::Entities};
$error = encode_entities($error);
+ # Also encode most ASCII punctuation
+ # as entities so that error messages
+ # are not interpreted as Markdown etc.
+ $error = encode_entities($error, '[](){}!#$%*?@^`|~'."\\");
$ret="[[!$command <span class=\"error\">".
gettext("Error").": $error"."</span>]]";
}