This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
TODO tests for $^A tainting
authorNiko Tyni <ntyni@debian.org>
Fri, 12 Nov 2010 17:35:34 +0000 (19:35 +0200)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 15 Nov 2010 00:52:23 +0000 (16:52 -0800)
The format accumulator $^A should become tainted when formline() is
called with tainted data.

t/op/taint.t

index 158824e..76e312f 100644 (file)
@@ -17,7 +17,7 @@ use Config;
 use File::Spec::Functions;
 
 BEGIN { require './test.pl'; }
-plan tests => 326;
+plan tests => 335;
 
 $| = 1;
 
@@ -1405,6 +1405,27 @@ end
     "formline survives a tainted dynamic picture");
 }
 
+TODO: {
+    local $::TODO = '$^A tainting unimplemented';
+    ok(!tainted($^A), "format accumulator not tainted yet");
+    formline('@ | @*', 'hallo' . $TAINT, 'welt');
+    ok(tainted($^A), "tainted formline argument makes a tainted accumulator");
+    $^A = "";
+    ok(!tainted($^A), "accumulator can be explicitly untainted");
+    formline('@' .('<'*5) . ' | @*', 'hallo', 'welt');
+    ok(!tainted($^A), "accumulator still untainted");
+    $^A = "" . $TAINT;
+    ok(tainted($^A), "accumulator can be explicitly tainted");
+    formline('@' .('<'*5) . ' | @*', 'hallo', 'welt');
+    ok(tainted($^A), "accumulator still tainted");
+    $^A = "";
+    ok(!tainted($^A), "accumulator untainted again");
+    formline('@' .('<'*5) . ' | @*', 'hallo', 'welt');
+    ok(!tainted($^A), "accumulator still untainted");
+    formline('@' .('<'*(5+$TAINT0)) . ' | @*', 'hallo', 'welt');
+    ok(tainted($^A), "tainted formline picture makes a tainted accumulator");
+}
+
 # This may bomb out with the alarm signal so keep it last
 SKIP: {
     skip "No alarm()"  unless $Config{d_alarm};