The bug is caused by careless use of input as regex's in at least two places.
The following can hide the problem, but I don't know if it's a proper fix:

-------------- cut here ------------- 8< -----------------------
--- CGI.pm.orig 2006-12-05 06:52:37.000000000 -0500
+++ CGI.pm      2007-02-20 12:43:25.000000000 -0500
@@ -2632,7 +2632,8 @@
 
     my $uri         =  $rewrite && $request_uri ? $request_uri : $script_name;
     $uri            =~ s/\?.*$//;                                 # remove 
query string
-    $uri            =~ s/$path$//      if defined $path;          # remove path
+    my $path_re = quotemeta($path);
+    $uri            =~ s/$path_re$//      if defined $path;          # remove 
path
 
     if ($full) {
        my $protocol = $self->protocol();
@@ -2768,8 +2769,9 @@
    my $raw_path_info   = $ENV{PATH_INFO}   || '';
    my $uri             = $ENV{REQUEST_URI} || '';
 
-   if ($raw_script_name =~ m/$raw_path_info$/) {
-     $raw_script_name =~ s/$raw_path_info$//;
+  my $raw_path_info_re = quotemeta($raw_path_info);
+   if ($raw_script_name =~ m/$raw_path_info_re$/) {
+     $raw_script_name =~ s/$raw_path_info_re$//;
    }
 
    my @uri_double_slashes  = $uri =~ m^(/{2,}?)^g;
-------------- cut here ------------- 8< -----------------------

Regards,
-- 
Ambrose Li  <[EMAIL PROTECTED]>

Chinese Cultural Centre of Greater Toronto
+1 416 292 9293      http://www.cccgt.org/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to