stas 2003/08/29 19:35:10
Modified: ModPerl-Registry/lib/ModPerl RegistryCooker.pm
RegistryLoader.pm
Log:
adjust to use the C slurp_filename, which now allows to get the data
untainted in first place
Revision Changes Path
1.36 +2 -11 modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
Index: RegistryCooker.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -u -r1.35 -r1.36
--- RegistryCooker.pm 23 Mar 2003 04:52:24 -0000 1.35
+++ RegistryCooker.pm 30 Aug 2003 02:35:09 -0000 1.36
@@ -17,6 +17,7 @@
use Apache::Response ();
use Apache::RequestRec ();
+use Apache::RequestUtil ();
use Apache::RequestIO ();
use Apache::Log ();
use Apache::Access ();
@@ -524,7 +525,7 @@
my $self = shift;
$self->debug("reading $self->{FILENAME}") if DEBUG & D_NOISE;
- $self->{CODE} = $self->{REQ}->my_slurp_filename;
+ $self->{CODE} = $self->{REQ}->slurp_filename(0); # untainted
}
#########################################################################
@@ -639,7 +640,6 @@
ModPerl::Global::special_list_clear(END => $self->{PACKAGE});
- ModPerl::Util::untaint($$eval);
{
# let the code define its own warn and strict level
no strict;
@@ -753,15 +753,6 @@
my $r = shift;
stat $r->filename;
\*_;
-}
-
-sub Apache::RequestRec::my_slurp_filename {
- my $r = shift;
- open my $fh, $r->filename;
- local $/;
- my $data = <$fh>;
- close $fh;
- return \$data;
}
1.9 +6 -1 modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm
Index: RegistryLoader.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -u -r1.8 -r1.9
--- RegistryLoader.pm 2 Mar 2003 22:47:19 -0000 1.8
+++ RegistryLoader.pm 30 Aug 2003 02:35:09 -0000 1.9
@@ -109,12 +109,17 @@
# override Apache class methods called by Modperl::Registry*. normally
# only available at request-time via blessed request_rec pointer
-sub my_slurp_filename {
+sub slurp_filename {
my $r = shift;
+ my $tainted = @_ ? shift : 1;
my $filename = $r->filename;
open my $fh, $filename or die "can't open $filename: $!";
local $/;
my $code = <$fh>;
+ unless ($tainted) {
+ ($code) = $code =~ /(.*)/s; # untaint
+ }
+ close $fh;
return \$code;
}