From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- .../files/File-Temp-0.230.0-symlink-safety.patch | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 perl-core/File-Temp/files/File-Temp-0.230.0-symlink-safety.patch (limited to 'perl-core/File-Temp/files') diff --git a/perl-core/File-Temp/files/File-Temp-0.230.0-symlink-safety.patch b/perl-core/File-Temp/files/File-Temp-0.230.0-symlink-safety.patch new file mode 100644 index 000000000000..d6a3a717c702 --- /dev/null +++ b/perl-core/File-Temp/files/File-Temp-0.230.0-symlink-safety.patch @@ -0,0 +1,37 @@ +From: John Lightsey +Date: Mon, 27 Jun 2011 13:07:44 -0500 +Subject: [PATCH] symlink safety + +Add check for unsafe symbolic links to _is_safe() directory check. + + +diff -ruN File-Temp-0.23.orig/lib/File/Temp.pm File-Temp-0.23/lib/File/Temp.pm +--- File-Temp-0.23.orig/lib/File/Temp.pm 2013-03-14 22:56:59.000000000 +0100 ++++ File-Temp-0.23/lib/File/Temp.pm 2014-10-15 23:46:29.894611586 +0200 +@@ -672,7 +672,25 @@ + my $err_ref = shift; + + # Stat path +- my @info = stat($path); ++ my @info = lstat($path); ++ my $symlink_test_path = $path; ++ my $symlink_loop_count = 0; ++ while (-l _) { ++ if (++$symlink_loop_count >= 50) { ++ $$err_ref = "50 levels of symlinks encountered at $path"; ++ return 0; ++ } ++ if ( $info[4] <= File::Temp->top_system_uid() || $info[4] == $>) { ++ # safe to traverse ++ $symlink_test_path = readlink($symlink_test_path); ++ @info = lstat($symlink_test_path); ++ } ++ else { ++ $$err_ref = "Unsafe symlink at $path"; ++ return 0; ++ } ++ } ++ + unless (scalar(@info)) { + $$err_ref = "stat(path) returned no values"; + return 0; -- cgit v1.2.3