This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
don't taint $DB::sub
authorDavid Mitchell <davem@iabyn.com>
Wed, 25 Aug 2010 11:15:41 +0000 (12:15 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 25 Aug 2010 11:15:41 +0000 (12:15 +0100)
commit07004ebbe530fe5ce1c67e63c0b8e1c0aa77b3b9
tree1edfd5adf69112c113382f0ad93608189dee10d1
parent3f9bb6b034fc3e91c3576718cf4783d1f5fa55f9
don't taint $DB::sub

[perl #76872] showed a case where code like the following, run under -d,
would cause $DB::sub to get set:

    $tainted_expression && func()

The tainted expression sets PL_tainted, so calling func() under -d, which
sets $DB::sub, causes it to get tainted.

Consequently any further sub calls would set PL_tainted while getting the
old value of $DB::sub (and cause the new value to be tainted too), and if
the sub was XS, then its code would be executed with PL_tainted set.
It isn't an issue with perl subs as the first nextstate op resets
PL_tainted.
MANIFEST
lib/perl5db.t
lib/perl5db/t/taint [new file with mode: 0644]
util.c