Re: [PATCH] gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Aug 15, 2012, 18:15 UTC
- Message-ID
- <201208152015.49132.jnareb@gmail.com>
- In-Reply-To
- <7vr4rgoz1u.fsf@alter.siamese.dyndns.org>
On Thu, 9 Aug 2012, Junio C Hamano wrote:
Show 37 quoted lines
> Jay Soffian <jaysoffian@gmail.com> writes: > > > When gitweb is used as a DirectoryIndex, it attempts to strip > > PATH_INFO on its own, as $cgi->url() fails to do so. > > > > However, it fails to account for the fact that PATH_INFO has > > already been URL-decoded by the web server, but the value > > returned by $cgi->url() has not been. This causes the stripping > > to fail whenever the URL contains encoded characters. > > > > To see this in action, setup gitweb as a DirectoryIndex and > > then use it on a repository with a directory containing a > > space in the name. Navigate to tree view, examine the gitweb > > generated html and you'll see a link such as: > > > > <a href="/test.git/tree/HEAD:/directory with spaces">directory with spaces</a> > > > > When clicked on, the browser will URL-encode this link, giving > > a $cgi->url() of the form: > > > > /test.git/tree/HEAD:/directory%20with%20spaces > > > > While PATH_INFO is: > > > > /test.git/tree/HEAD:/directory with spaces > > > > Fix this by calling unescape() on both $my_url and $my_uri before > > stripping PATH_INFO from them. > > > > Signed-off-by: Jay Soffian <jaysoffian@gmail.com> > > --- > > Thanks. From a cursory look, with the help from the explanation in > the proposed commit log message, the change looks sensible. > > I wonder if a breakage like this is something we can catch in one of > the t95xx series of tests, though.
No, it is unfortunately not possible with current test infrastructure for gitweb. The gitweb_run from t/gitweb-lib.sh allows to set PATH_INFO and QUERY_STRING, but does not allow to set up URL.
That might change in the future...
> Jakub, Ack?
Acked-by: Jakub Narebski <jnareb@gmail.com>
Uf ut us bot too late...
-- Jakub Narebski Poland