improve escaping of wikilinks and preprocessor directives

The old method failed for '[' x 3.
Joey Hess 2008-11-18 02:43:17 -05:00
parent 767bf9c483
commit 15269fed64
4 changed files with 9 additions and 7 deletions

View File

@ -610,7 +610,7 @@ sub add_page (@) { #{{{
my $template=template($feed->{template}, blind_cache => 1);
$template->param(title => $params{title})
if defined $params{title} && length($params{title});
$template->param(content => htmlescape(htmlabs($params{content},
$template->param(content => wikiescape(htmlabs($params{content},
defined $params{base} ? $params{base} : $feed->{feedurl})));
$template->param(name => $feed->{name});
$template->param(url => $feed->{url});
@ -637,11 +637,9 @@ sub add_page (@) { #{{{
}
} #}}}
sub htmlescape ($) { #{{{
sub wikiescape ($) { #{{{
# escape accidental wikilinks and preprocessor stuff
my $html=shift;
$html=~s/(?<!\\)\[\[/\\\[\[/g;
return $html;
return encode_entities(shift, '\[\]');
} #}}}
sub urlabs ($$) { #{{{

View File

@ -5,6 +5,7 @@ use warnings;
use strict;
use IkiWiki 2.00;
use Encode;
use HTML::Entities;
sub import { #{{{
hook(type => "getsetup", id => "recentchanges", call => \&getsetup);
@ -163,7 +164,7 @@ sub store ($$$) { #{{{
if (ref $change->{message}) {
foreach my $field (@{$change->{message}}) {
if (exists $field->{line}) {
$field->{line} =~ s/(?<!\\)\[\[/\\\[\[/g;
$field->{line} = encode_entities($field->{line}, '\[\]');
}
}
}

View File

@ -4,6 +4,7 @@ package IkiWiki::Plugin::recentchangesdiff;
use warnings;
use strict;
use IkiWiki 2.00;
use HTML::Entities;
my $maxlines=200;
@ -39,7 +40,7 @@ sub pagetemplate (@) { #{{{
$diff=join("", @lines);
}
# escape links and preprocessor stuff
$diff =~ s/(?<!\\)\[\[/\\\[\[/g;
$diff = encode_entities($diff, '\[\]');
$template->param(diff => $diff);
}
}

2
debian/changelog vendored
View File

@ -3,6 +3,8 @@ ikiwiki (2.71) UNRELEASED; urgency=low
* htmlbalance: New plugin contributed by Simon McVittie.
* Change deb dependencies to list Text::Markdown before markdown (really
this time).
* Improve escaping of wikilinks and preprocessor directives in content
produced by aggregate and recentchanges.
-- Joey Hess <joeyh@debian.org> Mon, 17 Nov 2008 14:02:10 -0500