]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: fix unmatched div in commitdiff
[Gitweb] / gitweb.perl
index 4a8bea05535303f7e1673a0bf33dfb9188fb2993add3c6e75aa9e77e621c1800..5f1088fdb9c5c5424a2f7a7a7d0cb80aa0097a7e6025e4cc9118ed90fee8a4ed 100755 (executable)
@@ -577,11 +577,10 @@ sub esc_html ($;%) {
 
        $str = to_utf8($str);
        $str = escapeHTML($str);
-       $str =~ s/\014/^L/g; # escape FORM FEED (FF) character (e.g. in COPYING file)
-       $str =~ s/\033/^[/g; # "escape" ESCAPE (\e) character (e.g. commit 20a3847d8a5032ce41f90dcc68abfb36e6fee9b1)
        if ($opts{'-nbsp'}) {
                $str =~ s/ / /g;
        }
+       $str =~ s|([[:cntrl:]])|(($1 ne "\t") ? quot_cec($1) : $1)|eg;
        return $str;
 }
 
@@ -816,12 +815,11 @@ sub file_type_long {
 ## functions returning short HTML fragments, or transforming HTML fragments
 ## which don't beling to other sections
 
-# format line of commit message or tag comment
+# format line of commit message.
 sub format_log_line_html {
        my $line = shift;
 
-       $line = esc_html($line);
-       $line =~ s/ / /g;
+       $line = esc_html($line, -nbsp=>1);
        if ($line =~ m/([0-9a-fA-F]{40})/) {
                my $hash_text = $1;
                if (git_get_type($hash_text) eq "commit") {
@@ -1880,17 +1878,17 @@ sub git_print_page_path {
                        $fullname .= ($fullname ? '/' : '') . $dir;
                        print $cgi->a({-href => href(action=>"tree", file_name=>$fullname,
                                                     hash_base=>$hb),
-                                     -title => $fullname}, esc_path($dir));
+                                     -title => esc_html($fullname)}, esc_path($dir));
                        print " / ";
                }
                if (defined $type && $type eq 'blob') {
                        print $cgi->a({-href => href(action=>"blob_plain", file_name=>$file_name,
                                                     hash_base=>$hb),
-                                     -title => $name}, esc_path($basename));
+                                     -title => esc_html($name)}, esc_path($basename));
                } elsif (defined $type && $type eq 'tree') {
                        print $cgi->a({-href => href(action=>"tree", file_name=>$file_name,
                                                     hash_base=>$hb),
-                                     -title => $name}, esc_path($basename));
+                                     -title => esc_html($name)}, esc_path($basename));
                        print " / ";
                } else {
                        print esc_path($basename);
@@ -2341,6 +2339,8 @@ sub git_patchset_body {
 
                print format_diff_line($patch_line);
        }
+       print "</div>\n" if $in_header; # extended header
+
        print "</div>\n" if $patch_found; # class="patch"
 
        print "</div>\n"; # class="patchset"
@@ -2852,6 +2852,7 @@ sub git_tag {
        print "<div class=\"page_body\">";
        my $comment = $tag{'comment'};
        foreach my $line (@$comment) {
+               chomp($line);
                print esc_html($line) . "<br/>\n";
        }
        print "</div>\n";
@@ -2921,6 +2922,7 @@ HTML
                        }
                }
                my $data = $_;
+               chomp($data);
                my $rev = substr($full_rev, 0, 8);
                my $author = $meta->{'author'};
                my %date = parse_date($meta->{'author-time'},
This page took 0.22618 seconds and 4 git commands to generate.