diff options
-rw-r--r-- | lib/rubygems.rb | 15 | ||||
-rw-r--r-- | lib/rubygems/basic_specification.rb | 18 | ||||
-rw-r--r-- | lib/rubygems/bundler_version_finder.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/commands/pristine_command.rb | 5 | ||||
-rw-r--r-- | lib/rubygems/config_file.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/core_ext/kernel_gem.rb | 10 | ||||
-rw-r--r-- | lib/rubygems/core_ext/kernel_require.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/installer.rb | 8 | ||||
-rw-r--r-- | lib/rubygems/name_tuple.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/package.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/path_support.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/request_set.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/request_set/gem_dependency_api.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/request_set/lockfile.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/source.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/specification.rb | 12 | ||||
-rw-r--r-- | lib/rubygems/stub_specification.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/test_case.rb | 12 | ||||
-rw-r--r-- | lib/rubygems/version.rb | 38 |
19 files changed, 78 insertions, 66 deletions
@@ -9,7 +9,7 @@ require 'rbconfig' module Gem - VERSION = "3.1.0.pre2".freeze end # Must be first since it unloads the prelude from 1.9.2 @@ -116,6 +116,11 @@ require 'rubygems/path_support' module Gem RUBYGEMS_DIR = File.dirname File.expand_path(__FILE__) ## # An Array of Regexps that match windows Ruby platforms. @@ -521,7 +526,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}" $LOAD_PATH.map do |load_path| Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path) - end.flatten.select { |file| File.file? file.untaint } end ## @@ -1083,7 +1088,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # The home directory for the user. def self.user_home - @user_home ||= find_home.untaint end ## @@ -1150,7 +1155,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} globbed = Gem::Util.glob_files_in_dir(glob, load_path) globbed.each do |load_path_file| - files << load_path_file if File.file?(load_path_file.untaint) end end @@ -1196,7 +1201,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} end end - path.untaint unless File.file? path return unless raise_exception @@ -98,7 +98,7 @@ class Gem::BasicSpecification # Returns full path to the directory where gem's extensions are installed. def extension_dir - @extension_dir ||= File.expand_path(File.join(extensions_dir, full_name)).untaint end ## @@ -113,7 +113,7 @@ class Gem::BasicSpecification def find_full_gem_path # :nodoc: # TODO: also, shouldn't it default to full_name if it hasn't been written? path = File.expand_path File.join(gems_dir, full_name) - path.untaint path end @@ -135,9 +135,9 @@ class Gem::BasicSpecification def full_name if platform == Gem::Platform::RUBY or platform.nil? - "#{name}-#{version}".dup.untaint else - "#{name}-#{version}-#{platform}".dup.untaint end end @@ -149,7 +149,7 @@ class Gem::BasicSpecification @full_require_paths ||= begin full_paths = raw_require_paths.map do |path| - File.join full_gem_path, path.untaint end full_paths << extension_dir if have_extensions? @@ -163,7 +163,7 @@ class Gem::BasicSpecification def datadir # TODO: drop the extra ", gem_name" which is uselessly redundant - File.expand_path(File.join(gems_dir, full_name, "data", name)).untaint end ## @@ -277,7 +277,7 @@ class Gem::BasicSpecification # TODO: do we need these?? Kill it glob = File.join(self.lib_dirs_glob, glob) - Dir[glob].map { |f| f.untaint } # FIX our tests are broken, run w/ SAFE=1 end ## @@ -295,7 +295,7 @@ class Gem::BasicSpecification "lib" # default value for require_paths for bundler/inline end - "#{self.full_gem_path}/#{dirs}".dup.untaint end ## @@ -328,7 +328,7 @@ class Gem::BasicSpecification def have_file?(file, suffixes) return true if raw_require_paths.any? do |path| - base = File.join(gems_dir, full_name, path.untaint, file).untaint suffixes.any? { |suf| File.file? base + suf } end @@ -83,7 +83,7 @@ To install the missing version, run `gem install bundler:#{vr.first}` gemfile = ENV["BUNDLE_GEMFILE"] gemfile = nil if gemfile && gemfile.empty? Gem::Util.traverse_parents Dir.pwd do |directory| - next unless gemfile = Gem::GEM_DEP_FILES.find { |f| File.file?(f.untaint) } gemfile = File.join directory, gemfile break @@ -94,7 +94,7 @@ To install the missing version, run `gem install bundler:#{vr.first}` lockfile = case gemfile when "gems.rb" then "gems.locked" else "#{gemfile}.lock" - end.dup.untaint return unless File.file?(lockfile) @@ -111,11 +111,6 @@ extensions will be restored. "Failed to find gems #{options[:args]} #{options[:version]}" end - install_dir = Gem.dir # TODO use installer option - - raise Gem::FilePermissionError.new(install_dir) unless - File.writable?(install_dir) - say "Restoring gems to pristine condition..." specs.each do |spec| @@ -180,7 +180,7 @@ class Gem::ConfigFile operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS) platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS) system_config = load_file SYSTEM_WIDE_CONFIG_FILE - user_config = load_file config_file_name.dup.untaint environment_config = (ENV['GEMRC'] || '') .split(File::PATH_SEPARATOR).inject({}) do |result, file| @@ -61,9 +61,13 @@ module Kernel spec = dep.to_spec - Gem::LOADED_SPECS_MUTEX.synchronize do - spec.activate - end if spec end private :gem @@ -41,7 +41,7 @@ module Kernel resolved_path = begin rp = nil $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| - safe_lp = lp.dup.untaint next if File.symlink? safe_lp # for backword compatibility Gem.suffixes.each do |s| full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) @@ -196,8 +196,6 @@ class Gem::Installer @package.prog_mode = options[:prog_mode] @package.data_mode = options[:data_mode] - @bin_dir = options[:bin_dir] if options[:bin_dir] - if options[:user_install] @gem_home = Gem.user_dir @bin_dir = Gem.bindir gem_home unless options[:bin_dir] @@ -394,7 +392,7 @@ class Gem::Installer specs = [] Gem::Util.glob_files_in_dir("*.gemspec", File.join(gem_home, "specifications")).each do |path| - spec = Gem::Specification.load path.untaint specs << spec if spec end @@ -502,7 +500,7 @@ class Gem::Installer raise Gem::FilePermissionError.new(@bin_dir) unless File.writable? @bin_dir spec.executables.each do |filename| - filename.untaint bin_path = File.join gem_dir, spec.bindir, filename unless File.exist? bin_path @@ -633,7 +631,7 @@ class Gem::Installer def ensure_loadable_spec ruby = spec.to_ruby_for_cache - ruby.untaint begin eval ruby @@ -55,7 +55,7 @@ class Gem::NameTuple "#{@name}-#{@version}" else "#{@name}-#{@version}-#{@platform}" - end.dup.untaint end ## @@ -498,7 +498,7 @@ EOM real_destination.start_with? destination_dir + '/' end - destination.untaint destination end @@ -36,7 +36,7 @@ class Gem::PathSupport @spec_cache_dir = env["GEM_SPEC_CACHE"] || Gem.default_spec_cache_dir - @spec_cache_dir = @spec_cache_dir.dup.untaint end private @@ -334,7 +334,7 @@ class Gem::RequestSet @git_set.root_dir = @install_dir - lock_file = "#{File.expand_path(path)}.lock".dup.untaint begin tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file lock_file parser = tokenizer.make_parser self, [] @@ -280,7 +280,7 @@ class Gem::RequestSet::GemDependencyAPI # Loads the gem dependency file and returns self. def load - instance_eval File.read(@path).untaint, @path, 1 self end @@ -79,7 +79,9 @@ class Gem::RequestSet::Lockfile @gem_deps_file = File.expand_path(gem_deps_file) @gem_deps_dir = File.dirname(@gem_deps_file) - @gem_deps_file.untaint unless gem_deps_file.tainted? @platforms = [] end @@ -106,7 +106,7 @@ class Gem::Source def cache_dir(uri) # Correct for windows paths escaped_path = uri.path.sub(/^\/([a-z]):\//i, '/\\1-/') - escaped_path.untaint File.join Gem.spec_cache_dir, "#{uri.host}%#{uri.port}", File.dirname(escaped_path) end @@ -763,7 +763,7 @@ class Gem::Specification < Gem::BasicSpecification def self.each_gemspec(dirs) # :nodoc: dirs.each do |dir| Gem::Util.glob_files_in_dir("*.gemspec", dir).each do |path| - yield path.untaint end end end @@ -930,7 +930,7 @@ class Gem::Specification < Gem::BasicSpecification def self.dirs @@dirs ||= Gem.path.collect do |dir| - File.join dir.dup.untaint, "specifications" end end @@ -1112,12 +1112,12 @@ class Gem::Specification < Gem::BasicSpecification _spec = LOAD_CACHE_MUTEX.synchronize { LOAD_CACHE[file] } return _spec if _spec - file = file.dup.untaint return unless File.file?(file) code = File.read file, :mode => 'r:UTF-8:-' - code.untaint begin _spec = eval code, binding, file @@ -2642,9 +2642,9 @@ class Gem::Specification < Gem::BasicSpecification case ivar when "date" # Force Date to go through the extra coerce logic in date= - self.date = val.untaint else - instance_variable_set "@#{ivar}", val.untaint end end @@ -71,7 +71,7 @@ class Gem::StubSpecification < Gem::BasicSpecification def initialize(filename, base_dir, gems_dir, default_gem) super() - filename.untaint self.loaded_from = filename @data = nil @@ -259,10 +259,10 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni Gem::DefaultUserInteraction.ui = Gem::MockGemUi.new tmpdir = File.realpath Dir.tmpdir - tmpdir.untaint @tempdir = File.join(tmpdir, "test_rubygems_#{$$}") - @tempdir.untaint FileUtils.mkdir_p @tempdir @@ -274,7 +274,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni # Short and long path name is specific to Windows filesystem. if win_platform? @tempdir = Dir[@tempdir][0] - @tempdir.untaint end @gemhome = File.join @tempdir, 'gemhome' @@ -295,7 +295,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni $LOAD_PATH.map! do |s| expand_path = File.realpath(s) rescue File.expand_path(s) if expand_path != s - expand_path.untaint if s.instance_variable_defined?(:@gem_prelude_index) expand_path.instance_variable_set(:@gem_prelude_index, expand_path) end @@ -527,7 +527,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni end end - gem = File.join(@tempdir, File.basename(spec.cache_file)).untaint end Gem::Installer.at(gem, options.merge({:wrappers => true})).install @@ -566,7 +566,7 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni # Reads a Marshal file at +path+ def read_cache(path) - File.open path.dup.untaint, 'rb' do |io| Marshal.load io.read end end @@ -197,6 +197,8 @@ class Gem::Version end @@all = {} def self.new(version) # :nodoc: return super unless Gem::Version == self @@ -227,14 +229,14 @@ class Gem::Version # (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored. def bump - @bump ||= begin - segments = self.segments - segments.pop while segments.any? { |s| String === s } - segments.pop if segments.size > 1 - - segments[-1] = segments[-1].succ - self.class.new segments.join(".") - end end ## @@ -306,13 +308,13 @@ class Gem::Version # Non-prerelease versions return themselves. def release - @release ||= if prerelease? - segments = self.segments - segments.pop while segments.any? { |s| String === s } - self.class.new segments.join('.') - else - self - end end def segments # :nodoc: @@ -374,6 +376,12 @@ class Gem::Version end.reduce(&:concat) end protected def _version |