On Tue, 7 Dec 2004, Stas Bekman wrote:
> Randy Kobes wrote:
[ ... ]
> > ==============================================================
> > Index: lib/Apache/TestConfig.pm
> > ===================================================================
> > --- lib/Apache/TestConfig.pm (revision 110064)
> > +++ lib/Apache/TestConfig.pm (working copy)
> > @@ -1043,7 +1043,8 @@
> > # Temporarily untaint PATH
> > (local $ENV{PATH}) = ( $ENV{PATH} =~ /(.*)/ );
> > # -T disallows relative directories in the PATH
> > - $ENV{PATH} = join ':', grep !/^\./, split /:/, $ENV{PATH};
> > + my $sep = WIN32 ? ';' : ':';
> > + $ENV{PATH} = join $sep, grep !/^\./, split /$sep/, $ENV{PATH};
> >
> > # launder for -T
> > $cmd = $1 if $cmd =~ /(.*)/;
> > @@ -1657,7 +1658,12 @@
> > return unless $self->{APXS};
> > my $val;
> > unless (exists $self->{_apxs}{$q}) {
> > - local @ENV{ qw(PATH IFS CDPATH ENV BASH_ENV) };
> > + local @ENV{ qw(IFS CDPATH ENV BASH_ENV) };
> > + # Temporarily untaint PATH
> > + (local $ENV{PATH}) = ( $ENV{PATH} =~ /(.*)/ );
> > + # -T disallows relative directories in the PATH
> > + my $sep = WIN32 ? ';' : ':';
> > + $ENV{PATH} = join $sep, grep !/^\./, split /$sep/, $ENV{PATH};
> > my $devnull = devnull();
> > my $apxs = shell_ready($self->{APXS});
> > $val = qx($apxs -q $q 2>$devnull);
>
> As soon as you see dup like this, think refactoring :) e.g. add
> untaint_path(), that does the work and call it:
>
> local $ENV{PATH}) = untaint_path($ENV{PATH});
>
> Otherwise +1.
>
> And of course this wrapper should probably used in open_cmd too!
OK, I'll do that - thanks!
> Also is there some File::Spec thingy that defines record
> separator in paths?
I looked through there - there's not one specifically
defined. There are special cases for various platforms:
Mac => uses ',', but needs $ENV{Commands}, not $ENV{PATH}
OS2 => uses ';', but also translates '\' to '/'
VMS => uses a different $ENV variable
So some of these (eg, Mac and VMS) would require special
handling just to get at the equivalent of $ENV{PATH}.
Is leaving it just as is OK for the moment (using ';' for
WIN32, ':' otherwise), and if someone has problems with it,
we can fix it then?
Also, I haven't tried it yet, but just to make sure the
email messages go to the right place - can one do a commit
to Apache-Test from within modperl-2.0 svn (from within
the Apache-Test subdirectory)?
--
best regards,
randy