From 610e07776ea454ef5b86714f14718540ab0b4dae Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 10 Apr 2014 19:26:40 +0000 Subject: cgi: be strict about UTF-8 encoding in HTML and XML Hopefully this forces us to generate valid UTF-8 data. --- public-inbox-cgi | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'public-inbox-cgi') diff --git a/public-inbox-cgi b/public-inbox-cgi index 91314f06..cd79a4a7 100755 --- a/public-inbox-cgi +++ b/public-inbox-cgi @@ -26,11 +26,10 @@ BEGIN { } } -binmode STDOUT, ':utf8'; - my $ret = main(); my ($status, $headers, $body) = @$ret; +set_binmode($headers); if (@ARGV && $ARGV[0] eq 'static') { print $body; } else { # CGI @@ -143,3 +142,13 @@ sub get_mid_txt { my $x = mid2blob($ctx); $x ? [ "200 OK", {'Content-Type' => 'text/plain'}, $$x ] : r404(); } + +sub set_binmode { + my ($headers) = @_; + if ($headers->{'Content-Type'} eq 'text/plain') { + # no way to validate raw messages, mixed encoding is possible. + binmode STDOUT; + } else { # strict encoding for HTML and XML + binmode STDOUT, ':encoding(UTF-8)'; + } +} -- cgit v1.2.3-24-ge0c7