X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=2e6181fee151acdaa4a6685941cf9b4d3ada775a;hp=29b9a540d4ebf6022a0e38a47ba1cb9de0f799f8;hb=4ca079445f95088dac8bdc7506aa04696513fb12;hpb=282b6119e5aa8e7c679eb6c39aeaae5b16a8d6dd diff --git a/blosxom.cgi b/blosxom.cgi index 29b9a54..2e6181f 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -1,8 +1,8 @@ #!/usr/bin/perl # Blosxom -# Author: Rael Dornfest -# Version: 2.0.2 +# Author: Rael Dornfest (2003), The Blosxom Development Team (2005-2008) +# Version: 2.1.0 # Home/Docs/Licensing: http://blosxom.sourceforge.net/ # Development/Downloads: http://sourceforge.net/projects/blosxom @@ -88,7 +88,7 @@ use File::stat; use Time::Local; use CGI qw/:standard :netscape/; -$version = "2.0.2"; +$version = "2.1.0"; # Should I encode entities for xml content-types? (plugins can turn this off if they do it themselves) $encode_xml_entities = 1; @@ -661,17 +661,30 @@ sub generate { } if ( $encode_xml_entities && $content_type =~ m{\bxml\b} ) { + # Escape special characters inside the container + + # The following line should be moved more towards to top for + # performance reasons -- Axel Beckert, 2008-07-22 + my $url_escape_re = qr([^-/a-zA-Z0-9:._]); + + $url =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; + $path =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; + $fn =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; # Escape <, >, and &, and to produce valid RSS my %escape = ( '<' => '<', '>' => '>', '&' => '&', - '"' => '"' + '"' => '"', + "'" => ''' ); my $escape_re = join '|' => keys %escape; $title =~ s/($escape_re)/$escape{$1}/g; $body =~ s/($escape_re)/$escape{$1}/g; + $url =~ s/($escape_re)/$escape{$1}/g; + $path =~ s/($escape_re)/$escape{$1}/g; + $fn =~ s/($escape_re)/$escape{$1}/g; } $story = &$interpolate($story); @@ -735,34 +748,31 @@ sub nice_date { __DATA__ html content_type text/html; charset=$blog_encoding +html head html head html head -html head -html head -html head $blog_title $path_info_da $path_info_mo $path_info_yr -html head +html head +html head +html head $blog_title $path_info_da $path_info_mo $path_info_yr html head html head -html head
-html head $blog_title
-html head $path_info_da $path_info_mo $path_info_yr -html head
-html head

+html head

+html head

$blog_title

+html head

$path_info_da $path_info_mo $path_info_yr

+html head
-html story

-html story $title
-html story $body
-html story
-html story posted at: $ti | path: $path | permanent link to this entry -html story

+html story
+html story

$title

+html story
$body
+html story

posted at: $ti | path: $path | permanent link to this entry

+html story
-html date

$dw, $da $mo $yr

+html date

$dw, $da $mo $yr

html foot -html foot

-html foot

-html foot -html foot
+html foot
+html foot powered by blosxom +html foot
html foot html foot @@ -794,15 +804,17 @@ rss foot error content_type text/html +error head error head -error head -error head

Error: I'm afraid this is the first I've heard of a "$flavour" flavoured Blosxom. Try dropping the "/+$flavour" bit from the end of the URL.

- +error head Error: unknown Blosxom flavour "$flavour" +error head +error head

Error: unknown Blosxom flavour "$flavour"

+error head

I'm afraid this is the first I've heard of a "$flavour" flavoured Blosxom. Try dropping the "/+$flavour" bit from the end of the URL.

-error story

$title
-error story $body #

+error story

$title

+error story
$body

#

-error date

$dw, $da $mo $yr

+error date

$dw, $da $mo $yr

error foot error foot