From: Jay Soffian Date: Thu, 9 Aug 2012 02:29:26 +0000 (-0400) Subject: gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO X-Git-Url: https://git.ladys.computer/Gitweb/commitdiff_plain/6a34c39eebcfdbe39de7eb1333109b4ce36f73705a9f5b84adcb0e92181f5284?ds=inline;hp=6a34c39eebcfdbe39de7eb1333109b4ce36f73705a9f5b84adcb0e92181f5284 gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO 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: directory with spaces 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 Acked-by: Jakub Narebski Signed-off-by: Junio C Hamano ---