This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
signatures: add taint tests
authorDavid Mitchell <davem@iabyn.com>
Thu, 19 Sep 2019 10:25:53 +0000 (11:25 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 23 Sep 2019 13:42:00 +0000 (14:42 +0100)
t/op/taint.t

index 4c76de3..a7b11bc 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
 use strict;
 use Config;
 
-plan tests => 1043;
+plan tests => 1052;
 
 $| = 1;
 
@@ -2914,6 +2914,33 @@ is_tainted("$ovtaint", "overload preserves taint");
         or diag("\$@ = [$@]");
 }
 
+{
+    # check that each param is independent taint-wise.
+    use feature 'signatures';
+    use experimental 'signatures';
+
+    sub taint_sig1($a, $b, $c) {
+        isnt_tainted($a, 'taint_sig1: $a');
+        is_tainted  ($b, 'taint_sig1: $b');
+        isnt_tainted($c, 'taint_sig1: $c');
+    }
+    taint_sig1(1, $TAINT, 3);
+
+    sub taint_sig2($a, $b = $TAINT, $c = 3) {
+        isnt_tainted($a, 'taint_sig2: $a');
+        is_tainted  ($b, 'taint_sig2: $b');
+        isnt_tainted($c, 'taint_sig2: $c');
+    }
+    taint_sig2(1);
+
+    sub taint_sig3($a, $b = 2, $c = $TAINT) {
+        is_tainted  ($a, 'taint_sig3: $a');
+        isnt_tainted($b, 'taint_sig3: $b');
+        is_tainted  ($c, 'taint_sig3: $c');
+    }
+    taint_sig3($TAINT);
+}
+
 
 # This may bomb out with the alarm signal so keep it last
 SKIP: {