Zeig Code. Wenigstens die Stelle, die Perl in der Fehlermeldung bemängelt. Und die Fehlermeldung natürlich auch.
OK.
Ich habe jetzt einen Fehlerreport
Betrifft dies:
open( my $LOG2, '>', $Files{logfile} ) or die("$!");
Es handelt sich um den einzigen Schreibzugriff.
Ich kann nun zurückverfolgen, warum $Files{logfile} als tainted gilt.
vorher
...
logfile => $Path{__datadir} . 'log.ehf',
...
vorher
$Path{__datadir} = $Path{homedir} . '/' . '__data/';
$Path{homedir} = $Path{root} . $Path{htmldir} .'/'. $Path{ehfdatadir};
vorher
$Path{scriptpath} =~ s#\\#/#g;
( $Path{root}, $Path{cgi}, $Path{scriptname} ) =
( $Path{scriptpath} =~ m!^ (.*?/) ($Path{cgidir}/\w+/) ([a-z]+\.pl)$!x );
vorher
open( my $config, '<','config.ehf' ) or die ("Kann nicht config.ehf lesen $!");
while(<$config>){
...
/^scriptpath\s*=\s*"([^"]+)"/ and $Path{scriptpath} = $1 and next;
...
}
close $config;
und zu vorderst
my %Path = ( #defaults
...
scriptpath => $0,
);
Wie zu sehen wird zwar $0 verwendet, aber $0 wird auf jeden Fall über eine RE gewaschen.
Da ist kein Grund, dass diese Pfade tainted sein dürfen.
Und wieder meine Frage: Warum auf UNIX und nicht auf Windows?
mfg Beat