summaryrefslogtreecommitdiffstats
path: root/Bugzilla.pm
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2015-09-30 20:26:10 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2015-09-30 20:26:10 +0200
commit8fff7304d78ab79ca135cb16159912a43c7cb705 (patch)
tree0b3a01e8698079c2066e17eed70f7d10cfda9c9f /Bugzilla.pm
parent7321534b42aab3ab2064c73b6326d52f395f023c (diff)
downloadbugzilla-8fff7304d78ab79ca135cb16159912a43c7cb705.tar.gz
bugzilla-8fff7304d78ab79ca135cb16159912a43c7cb705.tar.xz
Bug 987742: Strawberry Perl requires C:\strawberry\c\bin\ to be in $ENV{PATH} to correctly load XS modules
r=gerv
Diffstat (limited to 'Bugzilla.pm')
-rw-r--r--Bugzilla.pm24
1 files changed, 16 insertions, 8 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm
index b53eef0a7..c6d7ae39b 100644
--- a/Bugzilla.pm
+++ b/Bugzilla.pm
@@ -82,19 +82,27 @@ sub init_page {
}
if (${^TAINT}) {
- # Some environment variables are not taint safe
- delete @::ENV{'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
- # Some modules throw undefined errors (notably File::Spec::Win32) if
- # PATH is undefined.
- $ENV{'PATH'} = '';
- # On Windows, these paths are tainted, preventing File::Spec::Win32->tmpdir
- # from using them. But we need a place to temporary store attachments
- # which are uploaded.
+ my $path = '';
if (ON_WINDOWS) {
+ # On Windows, these paths are tainted, preventing
+ # File::Spec::Win32->tmpdir from using them. But we need
+ # a place to temporary store attachments which are uploaded.
foreach my $temp (qw(TMPDIR TMP TEMP)) {
trick_taint($ENV{$temp}) if $ENV{$temp};
}
+ # Some DLLs used by Strawberry Perl are also in c\bin,
+ # see https://rt.cpan.org/Public/Bug/Display.html?id=99104
+ if (!ON_ACTIVESTATE) {
+ my $c_path = $path = dirname($^X);
+ $c_path =~ s/\bperl\b(?=\\bin)/c/;
+ $path .= ";$c_path";
+ }
}
+ # Some environment variables are not taint safe
+ delete @::ENV{'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
+ # Some modules throw undefined errors (notably File::Spec::Win32) if
+ # PATH is undefined.
+ $ENV{'PATH'} = $path;
}
# Because this function is run live from perl "use" commands of