aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2011-02-03 13:36:24 -0800
committerMax Kanat-Alexander <mkanat@bugzilla.org>2011-02-03 13:36:24 -0800
commit04a0f6e7a3d58e7ea0cdcff0b547c70e46fa58fe (patch)
treec3487602dfa214bdae57e2d78be53ce6943027bb /mod_perl.pl
parentBug 630681: Implement a MOD function for SQLite so collectstats.pl can run (diff)
downloadbugzilla-04a0f6e7a3d58e7ea0cdcff0b547c70e46fa58fe.tar.gz
bugzilla-04a0f6e7a3d58e7ea0cdcff0b547c70e46fa58fe.tar.bz2
bugzilla-04a0f6e7a3d58e7ea0cdcff0b547c70e46fa58fe.zip
Bug 630750: Don't let "." and "lib" get into @INC when running under
mod_perl r=dkl, a=mkanat
Diffstat (limited to 'mod_perl.pl')
-rw-r--r--mod_perl.pl17
1 files changed, 17 insertions, 0 deletions
diff --git a/mod_perl.pl b/mod_perl.pl
index 0c7caf173..54f14a8fa 100644
--- a/mod_perl.pl
+++ b/mod_perl.pl
@@ -17,6 +17,7 @@
package Bugzilla::ModPerl;
use strict;
+use warnings;
# This sets up our libpath without having to specify it in the mod_perl
# configuration.
@@ -90,6 +91,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}) {
@@ -111,6 +120,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(@_);
}