From 33d067022c9a5add1c2c21dc9b56fc279abe6290 Mon Sep 17 00:00:00 2001 From: David Mitchell Date: Thu, 19 Sep 2019 11:25:53 +0100 Subject: [PATCH] signatures: add taint tests --- t/op/taint.t | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/t/op/taint.t b/t/op/taint.t index 4c76de3..a7b11bc 100644 --- a/t/op/taint.t +++ b/t/op/taint.t @@ -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: { -- 1.8.3.1