loc_tools.pl: untaint _source_location's return value and fix a warning
authorTomasz Konojacki <me@xenu.pl>
Sat, 20 Jan 2018 22:54:34 +0000 (23:54 +0100)
committerKarl Williamson <khw@cpan.org>
Sun, 21 Jan 2018 00:49:19 +0000 (17:49 -0700)
Some of our tests are running with -T and it turns out that something in
File::Spec::Unix is the tainting the return value of _source_location().

Additionally, when warnings are enabled globally (with either $^W or -W),
not passing the last argument (filename) to File::Spec->catpath results in
an undefined variable warning.

t/loc_tools.pl

index fbe7242..4f0ae2b 100644 (file)
@@ -494,11 +494,13 @@ sub _source_location {
 
     my $caller_filename = (caller)[1];
 
-    return File::Spec->rel2abs(
+    my $loc = File::Spec->rel2abs(
         File::Spec->catpath(
-            (File::Spec->splitpath($caller_filename))[0, 1]
+            (File::Spec->splitpath($caller_filename))[0, 1], ''
         )
     );
+
+    return ($loc =~ /^(.*)$/)[0]; # untaint
 }
 
 1