diff --git a/lib/EvalServer.pm b/lib/EvalServer.pm index 6116baa..27c5414 100644 --- a/lib/EvalServer.pm +++ b/lib/EvalServer.pm @@ -58,11 +58,14 @@ warn "Spawning Eval: $args->{code}\n"; $namespace->run(code => sub { mount("tmpfs", $FindBin::Bin."/../jail/tmp", "tmpfs", 0, {size => "16m"}); mount("tmpfs", $FindBin::Bin."/../jail/tmp", "tmpfs", MS_PRIVATE, {size => "16m"}); - mount("/lib64", $FindBin::Bin."/../jail/lib64", undef, MS_PRIVATE|MS_BIND|MS_RDONLY, undef); - mount("/usr", $FindBin::Bin."/../jail/usr", undef, MS_PRIVATE|MS_BIND|MS_RDONLY, undef); - mount("/home/ryan/perl5", $FindBin::Bin."/../jail/perl5", undef, MS_PRIVATE|MS_BIND|MS_RDONLY, undef); - mount("jail", $FindBin::Bin."/../jail", undef, MS_REMOUNT|MS_RDONLY, undef); - + mount("/lib64", $FindBin::Bin."/../jail/lib64", undef, MS_BIND|MS_PRIVATE|MS_RDONLY, undef); + mount("/lib", $FindBin::Bin."/../jail/lib", undef, MS_BIND|MS_PRIVATE|MS_RDONLY, undef); + mount("/usr/bin", $FindBin::Bin."/../jail/usr/bin", undef, MS_BIND|MS_PRIVATE|MS_RDONLY, undef); + mount("/usr/lib", $FindBin::Bin."/../jail/usr/lib", undef, MS_BIND|MS_PRIVATE|MS_RDONLY, undef); + mount("/home/ryan/perl5", $FindBin::Bin."/../jail/perl5", undef, MS_BIND|MS_PRIVATE|MS_RDONLY, undef); + #my $q = qx|ls -lh /home/ryan/bots/perlbuut/jail/perl5/perlbrew/perls/perl-5.18*/bin|; + #print $q; + system($^X, $filename); my ($exit, $signal) = (($?&0xFF00)>>8, $?&0xFF); diff --git a/lib/eval.pl b/lib/eval.pl index c2c3f3f..1771725 100755 --- a/lib/eval.pl +++ b/lib/eval.pl @@ -533,9 +533,9 @@ Biqsip biqsip 'ugh chan ghitlh lursa' nuh bey' ngun petaq qeng soj tlhej waqboch } '; - + print STDERR "About to exec: ", $exec_map{'perl'.$version}{bin}, "\n"; unless ($version eq '4') { - exec($exec_map{'perl'.$version}{bin}, '-e', $wrapper); + exec($exec_map{'perl'.$version}{bin}, '-e', $wrapper) or die "Exec failed $!"; } else { exec($exec_map{'perl'.$version}{bin}, '-'); # the code for perl4 is actually still in STDIN, if we try to -e it needs to write files }