summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authornegi0109 <negi0109.seg@gmail.com>2023-09-10 17:01:15 +0000
committergit <svn-admin@ruby-lang.org>2023-09-11 21:06:21 +0000
commit8bb61077ad02c2b57eb5727b7da8a7a4fff28ef3 (patch)
tree168fb485e310538e0923f51ab3a45da3f5ccc496 /lib
parent1ae5dd6f320da502e1b4a032ed9c17e03a9f344f (diff)
[rubygems/rubygems] Fixed false positive SymlinkError in symbolic link directory
https://github.com/rubygems/rubygems/commit/58173ff2ea
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/package.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
index ba05fadbaf..ee64798cbb 100644
--- a/lib/rubygems/package.rb
+++ b/lib/rubygems/package.rb
@@ -413,6 +413,8 @@ EOM
# extracted.
def extract_tar_gz(io, destination_dir, pattern = "*") # :nodoc:
+ real_destination_dir = File.realpath(destination_dir)
+
directories = []
symlinks = []
@@ -428,7 +430,7 @@ EOM
real_destination = link_target.start_with?("/") ? link_target : File.expand_path(link_target, File.dirname(destination))
raise Gem::Package::SymlinkError.new(full_name, real_destination, destination_dir) unless
- normalize_path(real_destination).start_with? normalize_path(destination_dir + "/")
+ normalize_path(real_destination).start_with? normalize_path(real_destination_dir + "/")
symlinks << [full_name, link_target, destination, real_destination]
end