Skip to content

Commit

Permalink
Bug 987742: Strawberry Perl requires C:\strawberry\c\bin\ to be in $E…
Browse files Browse the repository at this point in the history
…NV{PATH} to correctly load XS modules

r=gerv
  • Loading branch information
LpSolit committed Sep 30, 2015
1 parent 7321534 commit 8fff730
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions Bugzilla.pm
Expand Up @@ -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
Expand Down

0 comments on commit 8fff730

Please sign in to comment.