Warum muß ich mir den Code rekonstruieren?
Warum solltest du dir in 5000 Zeilen Code irgend eine raussuchen?
Wenn du der Message nicht vertraust, welche Argumente hast du dann?
Und warum gibst Du nicht alle relevanten Variablen an?
Wie meinen?
Woher kommt $Path{'homedir'}? Wenn ich mir das aus $ENV{'HOME'} hole, ist $Files{'logfile'} tainted. Und zwar nur unter Unix, weil Windows $ENV{'HOME'} nicht setzt.
Ach Schneusel. Es kommt aus einem File, alles via Regex weissgewaschen.
open( my $config, '<','config.ehf' ) or die ("Kann nicht config.ehf lesen $!");
while(<$config>){
/^#/ and next;
/^domain\s*=\s*([a-zA-Z0-9_.-:]+)\s*$/ and $Path{domain} = $1 and next;
/^protokoll\s*=\s*(https?)\s*$/ and $Path{protokoll} = $1 and next;
/^htmldir\s*=\s*([A-Za-z0-9_.\/-]+)\s*$/ and $Path{htmldir} = $1 and next;
/^cgidir\s*=\s*([A-Za-z0-9_.\/-]+)\s*$/ and $Path{cgidir} = $1 and next;
/^ehfdatadir\s*=\s*([A-Za-z0-9_.\/-]+)\s*$/ and $Path{ehfdatadir} = $1 and next;
/^ehfupdatefrom\s*=\s*(\S+)\s*$/ and $System{updatesite} = $1 and next;
/^ehfdebug\s*=\s*([0-9]+)\s*$/ and $System{debug} = $1 and next;
/^scriptpath\s*=\s*"([^"]+)"/ and $Path{scriptpath} = $1 and next;
/^runonce=([1-9])/ and $ruopen = 1;
}
close $config;
Hier werden alle Bestandteile, aus welchen Pfade hergeleitet werden, konsequent gewaschen.
Wie zu sehen wird zwar $0 verwendet, aber $0 wird auf jeden Fall über eine RE gewaschen.
Nö, Du kannst SO nicht waschen. $0 bleibt tainted, bis Du es ÜBERSCHREIBST, und wenn Du noch so oft matcht. Nur die RE-Puffer ($1, $2, ...) sind vom Tainting explizit ausgenommen.
Sag ich ja, Angaben aus $0 werden via Regex herausgezogen, falls die Variable, die $0 speichert, nicht über das config file überschrieben wird
open( my $LOG2, '>', $Files{logfile} ) or die("$!");
[/code]Möchtest Du das Log übrigens wirklich jedes Mal plätten?
Aber sicher!
Ich habe im Moment noch eine andere Baustelle,
da die UNIX Perl Version (5.8.0) anscheinend Mühe mit
print $fh somefunc()
hat.
Ganz seltsames Verhalten und nicht durchgängig der Fall.
mfg Beat
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische