in reply to how to make lexical pragma global, hints ( pl_hints $^H %^H ), taint::all
Thanks tobyink, I did see that in my search but I found it unsatisfactory
Ok, this will add use re 'taint'; for all modules -- kinda like a source filter -- probably doesn't play well with PAR :)
also makes printing on STDOUT die if tainted
$ perl -I. -Tle "use retaint; retaint::foo(); print 123; print substr +$ENV{PATH}, 0, 1; " retaint.pm:20: tainted? 1 retaint.pm:21: tainted? 0 123 D $ perl -I. -Tle "use taintall; use retaint; retaint::foo(); print 123; + print substr $ENV{PATH}, 0, 1; " /loader/0xb61cbc/retaint.pm:21: tainted? 1 /loader/0xb61cbc/retaint.pm:22: tainted? 1 123 Insecure dependency in 'print' at -e line 1.
taintall.pm
retaint.pm
package retaint; use strict; use warnings; use Taint::Util; sub ut { taint(my $sv = "hlagh"); $sv = $1 if $sv =~ /^(.*)/; $sv; } sub tt { taint(my $sv = "hlagh"); $sv; } sub f{ my ($package, $filename, $line ) = caller; printf qq/%s:%d: tainted? %d\n/, $filename, $line, int tainted $_[ +0]; } sub foo { f( tt() ); f( ut() ); } 1;
|
|---|