diff options
author | Bundlerbot <bot@bundler.io> | 2019-11-07 09:12:08 +0000 |
---|---|---|
committer | Bundlerbot <bot@bundler.io> | 2019-11-07 09:12:08 +0000 |
commit | ac758c84847a9850ae18226bfd5291e73e637ca3 (patch) | |
tree | 1671c4c70796927c4f0c965db3a4978d232252cb /lib | |
parent | 6f452d62eb76c2699988e75b7a0eb69232026259 (diff) | |
parent | 65cfebb041c454c246aaf32a177b0243915a9998 (diff) | |
download | bundler-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.rb | 29 |
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 |