]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 630750: Don't let "." and "lib" get into @INC when running under
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 3 Feb 2011 21:38:04 +0000 (13:38 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 3 Feb 2011 21:38:04 +0000 (13:38 -0800)
mod_perl
r=dkl, a=mkanat

mod_perl.pl

index c567a5244aabce66602679b53030f1e46eab2870..708313e682bf28aef3de055f7c0b7e8fa70af652 100644 (file)
@@ -18,6 +18,7 @@
 package Bugzilla::ModPerl;
 
 use strict;
+use warnings;
 
 # This sets up our libpath without having to specify it in the mod_perl
 # configuration.
@@ -105,6 +106,14 @@ my $rl = new ModPerl::RegistryLoader();
 # Bugzilla/ModPerl/ResponseHandler.pm
 $rl->{package} = 'Bugzilla::ModPerl::ResponseHandler';
 my $feature_files = Bugzilla::Install::Requirements::map_files_to_features();
+
+# Prevent "use lib" from doing anything when the .cgi files are compiled.
+# This is important to prevent the current directory from getting into
+# @INC and messing things up. (See bug 630750.)
+no warnings 'redefine';
+local *lib::import = sub {};
+use warnings;
+
 foreach my $file (glob "$cgi_path/*.cgi") {
     my $base_filename = File::Basename::basename($file);
     if (my $feature = $feature_files->{$base_filename}) {
@@ -126,6 +135,14 @@ sub handler : method {
     # here explicitly or init_page's shutdownhtml code won't work right.
     $0 = $ENV{'SCRIPT_FILENAME'};
 
+    # Prevent "use lib" from modifying @INC in the case where a .cgi file
+    # is being automatically recompiled by mod_perl when Apache is
+    # running. (This happens if a file changes while Apache is already
+    # running.)
+    no warnings 'redefine';
+    local *lib::import = sub {};
+    use warnings;
+
     Bugzilla::init_page();
     return $class->SUPER::handler(@_);
 }