Browse Source

Merge branch 'jn/gitweb-highlite-sanitise'

* jn/gitweb-highlite-sanitise:
  gitweb: Strip non-printable characters from syntax highlighter output
maint
Junio C Hamano 13 years ago
parent
commit
17e2b114a8
  1. 14
      gitweb/gitweb.perl

14
gitweb/gitweb.perl

@ -1517,6 +1517,17 @@ sub esc_path { @@ -1517,6 +1517,17 @@ sub esc_path {
return $str;
}

# Sanitize for use in XHTML + application/xml+xhtm (valid XML 1.0)
sub sanitize {
my $str = shift;

return undef unless defined $str;

$str = to_utf8($str);
$str =~ s|([[:cntrl:]])|($1 =~ /[\t\n\r]/ ? $1 : quot_cec($1))|eg;
return $str;
}

# Make control characters "printable", using character escape codes (CEC)
sub quot_cec {
my $cntrl = shift;
@ -6484,7 +6495,8 @@ sub git_blob { @@ -6484,7 +6495,8 @@ sub git_blob {
$nr++;
$line = untabify($line);
printf qq!<div class="pre"><a id="l%i" href="%s#l%i" class="linenr">%4i</a> %s</div>\n!,
$nr, esc_attr(href(-replay => 1)), $nr, $nr, $syntax ? to_utf8($line) : esc_html($line, -nbsp=>1);
$nr, esc_attr(href(-replay => 1)), $nr, $nr,
$syntax ? sanitize($line) : esc_html($line, -nbsp=>1);
}
}
close $fd

Loading…
Cancel
Save