From: Jakub Narebski <jnareb@gmail.com>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH/RFC 1/n] gitweb: Better git-unquoting and gitweb-quoting of pathnames
Date: Fri, 3 Nov 2006 11:59:01 +0100 [thread overview]
Message-ID: <200611031159.02065.jnareb@gmail.com> (raw)
In-Reply-To: <7vlkmtgd3o.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
>
> > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> > index ec46b80..a15e916 100755
> > --- a/gitweb/gitweb.perl
> > +++ b/gitweb/gitweb.perl
> > @@ -563,12 +563,42 @@ sub esc_html {
> > return $str;
> > }
> >
> > +# quote unsafe characters and escape filename to HTML
> > +sub esc_path {
> > + my $str = shift;
> > + $str = esc_html($str);
> > + $str =~ s/[[:cntrl:]\a\b\e\f\n\r\t\011]/?/g; # like --hide-control-chars in ls
> > + return $str;
> > +}
> > +
>
> When you say "[:cntrl:]" do you need to say anything more?
Ooops. Yes, the \a\b\e\f\n\r\t\011 part is redundant.
> > # git may return quoted and escaped filenames
> > sub unquote {
> > my $str = shift;
> > +
> > + sub unq {
> > + my $seq = shift;
> > + my %es = (
> > + 't' => "\t", # tab (HT, TAB)
> > + 'n' => "\n", # newline (NL)
> > + 'r' => "\r", # return (CR)
> > + 'f' => "\f", # form feed (FF)
> > + 'b' => "\b", # backspace (BS)
> > + 'a' => "\a", # alarm (bell) (BEL)
> > + #'e' => "\e", # escape (ESC)
> > + 'v' => "\011", # vertical tab (VT)
> > + );
> > +
> > + # octal char sequence
> > + return chr(oct($seq)) if ($seq =~ m/^[0-7]{1,3}$/);
> > + # C escape sequence (this includes '\n' (LF) and '\t' (TAB))
> > + return $es{$seq} if ($seq =~ m/^[abefnrtv]$/);
>
> Problems in this part of the code X-<.
>
> * Was there a reason not to unwrap '\e' to "\e"?
It was not mentioned in description of git pathname quoting in the
message
http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2;
> * The vertical tab is \013 (decimal 11), not \011 (which is TAB).
Oops. ASCII 11 is decimal 11.
> * The name and the abbreviated name of the character "\n" are
> "line feed" and "LF"; I personally do not think these
> character name comments are needed in this part of the code,
> but I do not object if you want to have them there, as long
> as you spell them correctly. cf. ISO/IEC 6429:1992 or
> http://www.unicode.org/charts/PDF/U0000.pdf for example.
Perhaps it should be "LF ('\n') and TAB ('\t')".
> * The hash %es and the pattern /[abef...]/ must be kept in
> sync; it is a maintenance nightmare,
>
> * Worse yet, they do not agree even in this initial version,
> which proves the previous point.
>
> Perhaps this is better written as:
>
> if (exists $es{$seq}) {
> return $es{$seq};
> }
Fact.
Or
return $es{$seq} if exists $es{$seq};
--
Jakub Narebski
next prev parent reply other threads:[~2006-11-03 10:58 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-30 18:53 [PATCH 0/n] gitweb: Better quoting and New improved patchset view Jakub Narebski
2006-10-30 18:58 ` [PATCH/RFC 1/n] gitweb: Better git-unquoting and gitweb-quoting of pathnames Jakub Narebski
2006-11-03 8:15 ` Junio C Hamano
2006-11-03 10:59 ` Jakub Narebski [this message]
2006-11-03 11:58 ` Junio C Hamano
2006-11-03 12:09 ` Jakub Narebski
2006-10-30 18:59 ` [PATCH 2/n] gitweb: Use '&iquot;' instead of '?' in esc_path Jakub Narebski
2006-10-31 0:34 ` Junio C Hamano
2006-10-31 1:27 ` Junio C Hamano
2006-10-31 9:23 ` Jakub Narebski
2006-11-03 16:19 ` Jakub Narebski
2006-11-03 21:44 ` Junio C Hamano
2006-11-03 22:33 ` Jakub Narebski
2006-11-03 22:44 ` Junio C Hamano
2006-11-03 22:50 ` Petr Baudis
2006-11-03 23:35 ` Jakub Narebski
2006-11-04 0:02 ` Junio C Hamano
2006-11-04 10:31 ` Petr Baudis
2006-11-06 21:58 ` Jakub Narebski
2006-11-06 22:47 ` Junio C Hamano
2006-11-06 23:16 ` Jakub Narebski
[not found] ` <7vwt68b0f3.fsf@assigned-by-dhcp.cox.net>
2006-11-07 0:02 ` Jakub Narebski
2006-11-07 21:53 ` Jakub Narebski
2006-11-07 22:18 ` Junio C Hamano
2006-10-30 21:25 ` [PATCH 3/n] gitweb: Use 's' regexp modifier to secure against filenames with LF Jakub Narebski
2006-10-30 21:29 ` [PATCH 4/n] gitweb: Secure against commit-ish/tree-ish with the same name as path Jakub Narebski
2006-10-31 16:53 ` Jakub Narebski
2006-11-01 0:24 ` Junio C Hamano
2006-11-01 0:40 ` Jakub Narebski
2006-11-02 1:01 ` Junio C Hamano
2006-11-02 8:49 ` Jakub Narebski
2006-11-03 6:18 ` Junio C Hamano
2006-11-03 9:35 ` Junio C Hamano
2006-11-03 10:49 ` Jakub Narebski
2006-10-31 14:22 ` [PATCH 5/n] [take 3] gitweb: New improved patchset view Jakub Narebski
2006-11-03 10:26 ` [PATCH 5/10] " Jakub Narebski
2006-10-31 16:07 ` [PATCH 6/n] gitweb: Remove redundant "blob" links from git_difftree_body Jakub Narebski
2006-11-03 6:41 ` Junio C Hamano
2006-11-03 11:01 ` Jakub Narebski
2006-10-31 16:36 ` [PATCH 7/n] gitweb: Output also empty patches in "commitdiff" view Jakub Narebski
2006-11-03 11:56 ` Jakub Narebski
2006-10-31 16:43 ` [PATCH 8/n] gitweb: Fix two issues with quoted filenames in git_patchset_body Jakub Narebski
2006-11-01 13:33 ` [PATCH 9/n] gitweb: Better support for non-CSS aware web browsers Jakub Narebski
2006-11-01 13:38 ` Petr Baudis
2006-11-01 13:36 ` [PATCH 10/n] gitweb: New improved formatting of chunk header in diff Jakub Narebski
2006-11-01 18:52 ` [PATCH 00/10] gitweb: Better quoting and New improved patchset view Jakub Narebski
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=200611031159.02065.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.