git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Christopher M. Fuhrman" <cfuhrman@panix.com>
To: gitster@pobox.com, git@vger.kernel.org
Cc: jnareb@gmail.com, cwilson@cdwilson.us, sylvain@abstraction.fr,
	"Christopher M. Fuhrman" <cfuhrman@panix.com>
Subject: [PATCH] gitweb: highlight: strip non-printable characters via col(1)
Date: Mon, 22 Aug 2011 15:58:43 -0700	[thread overview]
Message-ID: <1314053923-13122-1-git-send-email-cfuhrman@panix.com> (raw)

From: "Christopher M. Fuhrman" <cfuhrman@panix.com>

The current code, as is, passes control characters, such as form-feed
(^L) to highlight which then passes it through to the browser.  This
will cause the browser to display one of the following warnings:

Safari v5.1 (6534.50) & Google Chrome v13.0.782.112:

  This page contains the following errors:

  error on line 657 at column 38: PCDATA invalid Char value 12
  Below is a rendering of the page up to the first error.

Mozilla Firefox 3.6.19 & Mozilla Firefox 5.0:

   XML Parsing Error: not well-formed
   Location:
   http://path/to/git/repo/blah/blah

Both errors were generated by gitweb.perl v1.7.3.4 w/ highlight 2.7
using arch/ia64/kernel/unwind.c from the Linux kernel.

Strip non-printable control-characters by piping the output produced
by git-cat-file(1) to col(1) as follows:

  git cat-file blob deadbeef314159 | col -bx | highlight <args>

Note usage of the '-x' option which tells col(1) to output multiple
spaces instead of tabs.

Tested under OpenSuSE 11.4 & NetBSD 5.1 using perl 5.12.3 and perl
5.12.2 respectively using Safari, Firefox, and Google Chrome.

Signed-off-by: Christopher M. Fuhrman <cfuhrman@panix.com>
---
Howdy,

I haven't gotten any responses to my patch for a while, so I am now
submitting this for general inclusion into git.  Please note that this
is based off the "maint" branch per Documentation/SubmittingPatches

For an example of this bug in action, see:

* http://git.fuhrbear.com/~cfuhrman/?p=linux/.git;a=blob;f=arch/alpha/kernel/core_titan.c;h=219bf271c0ba2e5f2d668af707df57fbbd00ccfd;hb=HEAD
* http://git.fuhrbear.com/~cfuhrman/?p=linux/.git;a=blob;f=arch/ia64/kernel/unwind.c;h=fed6afa2e8a9014e65229e51e64fa4b1c13cc284;hb=HEAD

WRT the col(1) command, I've verified that the binary is installed in
/usr/bin on OpenSuSE, NetBSD, OpenBSD, Solaris 10, and AIX.  This
patch assumes that /usr/bin is in $PATH.

Cheers!

 gitweb/gitweb.perl |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 50a835a..4c68165 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -3656,6 +3656,7 @@ sub run_highlighter {
 
 	close $fd;
 	open $fd, quote_command(git_cmd(), "cat-file", "blob", $hash)." | ".
+	          "col -bx | ".
 	          quote_command($highlight_bin).
 	          " --replace-tabs=8 --fragment --syntax $syntax |"
 		or die_error(500, "Couldn't open file or run syntax highlighter");
-- 
1.7.5.4

             reply	other threads:[~2011-08-22 22:59 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-22 22:58 Christopher M. Fuhrman [this message]
2011-08-22 23:21 ` [PATCH] gitweb: highlight: strip non-printable characters via col(1) Junio C Hamano
2011-08-26 19:54 ` Jakub Narebski
2011-08-26 21:44   ` Junio C Hamano
2011-08-26 22:06     ` Jakub Narebski
2011-09-16 12:41       ` [PATCH] gitweb: Strip non-printable characters from syntax highlighter output Jakub Narebski
2011-09-16 16:32         ` Junio C Hamano
2011-09-16 18:58           ` Jakub Narebski
2011-09-16 20:24             ` Junio C Hamano
2011-09-16 18:11         ` Christopher M. Fuhrman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1314053923-13122-1-git-send-email-cfuhrman@panix.com \
    --to=cfuhrman@panix.com \
    --cc=cwilson@cdwilson.us \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=sylvain@abstraction.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).