From 45dfdcb2571953be6815342510b9bb2a73ce59e7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Mar 2010 16:10:04 -0500 Subject: search: Avoid '$' in the wikiname appearing unescaped on omega's query template, where it might crash omega. Really, a more general fix, this deals with any $ that might appear on the misctemplate. --- IkiWiki/Plugin/search.pm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index fb68396a1..c0e8703d8 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -110,6 +110,7 @@ sub index (@) { # data used by omega # Decode html entities in it, since omega re-encodes them. eval q{use HTML::Entities}; + error $@ if $@; $doc->set_data( "url=".urlto($params{page}, "")."\n". "sample=".decode_entities($sample)."\n". @@ -214,9 +215,19 @@ sub setupfiles () { writefile("omega.conf", $config{wikistatedir}."/xapian", "database_dir .\n". "template_dir ./templates\n"); + + # Avoid omega interpreting anything in the misctemplate + # as an omegascript command. + my $misctemplate=IkiWiki::misctemplate(gettext("search"), "\0"); + eval q{use HTML::Entities}; + error $@ if $@; + $misctemplate=encode_entities($misctemplate, '\$'); + + my $querytemplate=readfile(IkiWiki::template_file("searchquery.tmpl")); + $misctemplate=~s/\0/$querytemplate/; + writefile("query", $config{wikistatedir}."/xapian/templates", - IkiWiki::misctemplate(gettext("search"), - readfile(IkiWiki::template_file("searchquery.tmpl")))); + $misctemplate); $setup=1; } } -- cgit v1.2.3