diff options
author | Max Kanat-Alexander <mkanat@bugzilla.org> | 2011-02-03 13:36:24 -0800 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2011-02-03 13:36:24 -0800 |
commit | 04a0f6e7a3d58e7ea0cdcff0b547c70e46fa58fe (patch) | |
tree | c3487602dfa214bdae57e2d78be53ce6943027bb /mod_perl.pl | |
parent | Bug 630681: Implement a MOD function for SQLite so collectstats.pl can run (diff) | |
download | bugzilla-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.pl | 17 |
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(@_); } |