This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test that ref works in tainted statements
authorFather Chrysostomos <sprout@cpan.org>
Mon, 10 Jul 2017 05:53:52 +0000 (22:53 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 10 Jul 2017 06:07:27 +0000 (23:07 -0700)
This commit broke Module::Runtime in debugging builds:

commit ba75e9a42bd919d317a4f5deb1e487c13586929d
Author: David Mitchell <davem@iabyn.com>
Date:   Fri Jan 6 14:59:54 2017 +0000

    make OP_REF support boolean context

This commit restored the previous, behaviour:

commit a10e04b588b6b10ac6d059efacd8dec25d14bdb3
Author: David Mitchell <davem@iabyn.com>
Date:   Thu Jun 15 14:29:56 2017 +0100

    pp_ref: do SvSETMAGIC(TARG)

But no test was added to make sure it stays fixed.  Here is a test.

t/op/taint.t

index c13eaf6..0988c7e 100644 (file)
@@ -2448,6 +2448,11 @@ is eval { eval $::x.1 }, 1, 'reset does not taint undef';
     isnt_tainted $b, "list assign post tainted expression b";
 }
 
+# Module::Runtime was temporarily broken between 5.27.0 and 5.27.1 because
+# ref() would fail an assertion in a tainted statement.  (No ok() neces-
+# sary since it aborts when it fails.)
+() = defined $^X && ref \$^X;
+
 
 # This may bomb out with the alarm signal so keep it last
 SKIP: {