Commit 6c0f16ff authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 351994: Messages shouldn't contain HTML characters unless we're in USAGE_MODE_BROWSER

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=ghendricks, a=myk
parent c4840b68
...@@ -760,6 +760,22 @@ sub create { ...@@ -760,6 +760,22 @@ sub create {
1 1
], ],
# Note that using this filter is even more dangerous than
# using "none," and you should only use it when you're SURE
# the output won't be displayed directly to a web browser.
txt => sub {
my ($var) = @_;
# Trivial HTML tag remover
$var =~ s/<[^>]*>//g;
# And this basically reverses the html filter.
$var =~ s/\&#64;/@/g;
$var =~ s/\&lt;/</g;
$var =~ s/\&gt;/>/g;
$var =~ s/\&quot;/\"/g;
$var =~ s/\&amp;/\&/g;
return $var;
},
# Wrap a displayed comment to the appropriate length # Wrap a displayed comment to the appropriate length
wrap_comment => \&Bugzilla::Util::wrap_comment, wrap_comment => \&Bugzilla::Util::wrap_comment,
......
...@@ -225,7 +225,7 @@ sub directive_ok { ...@@ -225,7 +225,7 @@ sub directive_ok {
return 1 if $directive =~ /FILTER\ (html|csv|js|base64|url_quote|css_class_quote| return 1 if $directive =~ /FILTER\ (html|csv|js|base64|url_quote|css_class_quote|
ics|quoteUrls|time|uri|xml|lower| ics|quoteUrls|time|uri|xml|lower|
obsolete|inactive|closed|unitconvert| obsolete|inactive|closed|unitconvert|
none)\b/x; txt|none)\b/x;
return 0; return 0;
} }
......
...@@ -434,7 +434,11 @@ ...@@ -434,7 +434,11 @@
[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %] [%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
[% USE Bugzilla %] [% USE Bugzilla %]
[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %] [% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
[% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
[% error_message FILTER none %] [% error_message FILTER none %]
[% ELSE %]
[% error_message FILTER txt %]
[% END %]
[% RETURN %] [% RETURN %]
[% END %] [% END %]
......
...@@ -23,4 +23,4 @@ ...@@ -23,4 +23,4 @@
[%# Yes, this may show some HTML. But it's the best we [%# Yes, this may show some HTML. But it's the best we
# can do at the moment. %] # can do at the moment. %]
[% PROCESS global/messages.html.tmpl %] [% PROCESS global/messages.html.tmpl %]
[% message %] [% message FILTER txt %]
...@@ -1483,7 +1483,11 @@ ...@@ -1483,7 +1483,11 @@
[%# We only want HTML error messages for ERROR_MODE_WEBPAGE %] [%# We only want HTML error messages for ERROR_MODE_WEBPAGE %]
[% USE Bugzilla %] [% USE Bugzilla %]
[% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %] [% IF Bugzilla.error_mode != constants.ERROR_MODE_WEBPAGE %]
[% IF Bugzilla.usage_mode == constants.USAGE_MODE_BROWSER %]
[% error_message FILTER none %] [% error_message FILTER none %]
[% ELSE %]
[% error_message FILTER txt %]
[% END %]
[% RETURN %] [% RETURN %]
[% END %] [% END %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment