X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fbin%2Ffastcgi_server;h=4ccf014dabdf9a7ca2585748b79f9acdcd6c01a1;hb=01f60974743197ac14e569c16c68a0c2ff3a5bd4;hp=248267e450ed122e0a44eef4f2cd237f7e97a47c;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984;p=freeside.git

diff --git a/rt/bin/fastcgi_server b/rt/bin/fastcgi_server
index 248267e45..4ccf014da 100755
--- a/rt/bin/fastcgi_server
+++ b/rt/bin/fastcgi_server
@@ -230,6 +230,18 @@ while ( my $cgi = CGI::Fast->new ) {
     Module::Refresh->refresh if RT->Config->Get('DevelMode');
     RT::ConnectToDatabase();
 
+    # Each environment has its own way of handling .. and so on in paths,
+    # so RT consistently forbids such paths.
+    if ( $cgi->path_info =~ m{/\.} ) {
+        $RT::Logger->crit("Invalid request for ".$cgi->path_info." aborting");
+        print STDOUT "HTTP/1.0 400\r\n\r\n";
+
+        RT::Interface::Web::Handler->CleanupRequest();
+        $proc_manager->pm_post_dispatch;
+
+        next;
+    }
+
     my $interp = $RT::Mason::Handler->interp;
     if (
         !$interp->comp_exists( $cgi->path_info )