From: Jakub Narebski <jnareb@gmail.com>
To: "Giuseppe Bilotta" <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org, "Shawn O. Pearce" <spearce@spearce.org>
Subject: Re: [PATCH] gitweb: refactor input parameters parse/validation
Date: Tue, 7 Oct 2008 16:39:24 +0200 [thread overview]
Message-ID: <200810071639.25324.jnareb@gmail.com> (raw)
In-Reply-To: <cb7bb73a0810070542v4c8a9820x4d91ea20597ddf01@mail.gmail.com>
Giuseppe Bilotta wrote:
> On Tue, Oct 7, 2008 at 12:57 PM, Jakub Narebski <jnareb@gmail.com> wrote:
>> On Fri, 3 Oct 2008, Giuseppe Bilotta wrote:
>>> + # find which part of PATH_INFO is project
>>> + my $project = $path_info;
>>
>> Hmmm... now $project is local (lexically) here.
>
> Yes, itt's only used temporarily here, to see if a proper $project
> can be defined. It gets redefined outside. It just made sense to name
> it like this 8-)
Well, if $project is local in evaluate_path_info(), so could be
$path_info...
>>> + $project =~ s,/+$,,;
>>> + while ($project && !check_head_link("$projectroot/$project")) {
>>> + $project =~ s,/*[^/]*$,,;
>>> + }
>>> + # validate project
>>> + $project = validate_project($project);
>>
>> I'm not sure if it is worth worrying over, but I think you repeat
>> check_head_link() check here.
>>
>> [After examining code further]. But I think you do double validation;
>> once you do it here, and once you do it copying to global variables
>> such as $action or $project, and double checking check_head_link()
>> won't be easy to avoid; fortunately it is cheap filesystem-level check
>> (might be slow only when stat is extremely slow, and is not cached).
>
> I know. This is actually the reason why I had interleaved path_info
> definition and global validation in my previous version of the patch.
> The big issue here is that path_info evaluation _needs_ (partial)
> validation.
>
> A possible alternative could be to only put validated parameters into
> %input_params. This would completely separate the validation for cgi
> and path_info (modulo shared subs).
>
> Of course, the check_head_link would still be repeated inside
> evaluate_path_info, but the other params could skip a double
> validation.
Wouldn't it be simpler and as good solution to just leave validation
off evaluate_path_info() (well, of course except check_head_link() test),
and allow it to be validated when assigning global 'params' variables?
check_head_link() would be repeated for path_info links, but that
should not affect performance much.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2008-10-07 14:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-03 17:19 [PATCH] gitweb: refactor input parameters parse/validation Giuseppe Bilotta
2008-10-07 10:57 ` Jakub Narebski
2008-10-07 12:42 ` Giuseppe Bilotta
2008-10-07 14:39 ` Jakub Narebski [this message]
2008-10-08 9:10 ` Giuseppe Bilotta
2008-10-08 9:45 ` Jakub Narebski
2008-10-08 9:26 ` [PATCHv2] " Giuseppe Bilotta
2008-10-10 8:37 ` Jakub Narebski
2008-10-10 15:01 ` Shawn O. Pearce
2008-10-10 17:33 ` Giuseppe Bilotta
2008-10-10 18:42 ` [PATCHv3] " Giuseppe Bilotta
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=200810071639.25324.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=giuseppe.bilotta@gmail.com \
--cc=spearce@spearce.org \
/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.