summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2019-11-07 09:12:08 +0000
committerBundlerbot <bot@bundler.io>2019-11-07 09:12:08 +0000
commitac758c84847a9850ae18226bfd5291e73e637ca3 (patch)
tree1671c4c70796927c4f0c965db3a4978d232252cb /lib
parent6f452d62eb76c2699988e75b7a0eb69232026259 (diff)
parent65cfebb041c454c246aaf32a177b0243915a9998 (diff)
downloadbundler-ac758c84847a9850ae18226bfd5291e73e637ca3.tar.gz
Merge #7416
7416: Don't use insecure temporary directory as home directory r=deivid-rodriguez a=fatkodima Closes #6501 Co-authored-by: fatkodima <fatkodima123@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler.rb29
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb
index 809771a168..3b494a6cdf 100644
--- a/lib/bundler.rb
+++ b/lib/bundler.rb
@@ -231,8 +231,7 @@ module Bundler
end
if warning
- Kernel.send(:require, "etc")
- user_home = tmp_home_path(Etc.getlogin, warning)
+ user_home = tmp_home_path(warning)
Bundler.ui.warn "#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n"
user_home
else
@@ -241,21 +240,6 @@ module Bundler
end
end
- def tmp_home_path(login, warning)
- login ||= "unknown"
- Kernel.send(:require, "tmpdir")
- path = Pathname.new(Dir.tmpdir).join("bundler", "home")
- SharedHelpers.filesystem_access(path) do |tmp_home_path|
- unless tmp_home_path.exist?
- tmp_home_path.mkpath
- tmp_home_path.chmod(0o777)
- end
- tmp_home_path.join(login).tap(&:mkpath)
- end
- rescue RuntimeError => e
- raise e.exception("#{warning}\nBundler also failed to create a temporary home directory at `#{path}':\n#{e}")
- end
-
def user_bundle_path(dir = "home")
env_var, fallback = case dir
when "home"
@@ -676,6 +660,17 @@ EOF
Bundler.rubygems.clear_paths
end
+ def tmp_home_path(warning)
+ Kernel.send(:require, "tmpdir")
+ SharedHelpers.filesystem_access(Dir.tmpdir) do
+ path = Bundler.tmp
+ at_exit { Bundler.rm_rf(path) }
+ path
+ end
+ rescue RuntimeError => e
+ raise e.exception("#{warning}\nBundler also failed to create a temporary home directory':\n#{e}")
+ end
+
# @param env [Hash]
def with_env(env)
backup = ENV.to_hash