mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	[rubygems/rubygems] Fix escape of filenames in bundle doctor
				
					
				
			3ede1435ea
			
			
This commit is contained in:
		
							parent
							
								
									a60aba18f0
								
							
						
					
					
						commit
						af59d35570
					
				
					 2 changed files with 13 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require "rbconfig"
 | 
			
		||||
require "shellwords"
 | 
			
		||||
 | 
			
		||||
module Bundler
 | 
			
		||||
  class CLI::Doctor
 | 
			
		||||
| 
						 | 
				
			
			@ -22,14 +23,14 @@ module Bundler
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    def dylibs_darwin(path)
 | 
			
		||||
      output = `/usr/bin/otool -L "#{path}"`.chomp
 | 
			
		||||
      output = `/usr/bin/otool -L #{path.shellescape}`.chomp
 | 
			
		||||
      dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq
 | 
			
		||||
      # ignore @rpath and friends
 | 
			
		||||
      dylibs.reject {|dylib| dylib.start_with? "@" }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def dylibs_ldd(path)
 | 
			
		||||
      output = `/usr/bin/ldd "#{path}"`.chomp
 | 
			
		||||
      output = `/usr/bin/ldd #{path.shellescape}`.chomp
 | 
			
		||||
      output.split("\n").map do |l|
 | 
			
		||||
        match = l.match(LDD_REGEX)
 | 
			
		||||
        next if match.nil?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,4 +133,14 @@ RSpec.describe "bundle doctor" do
 | 
			
		|||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context "when home contains filesname with special characters" do
 | 
			
		||||
    it "escape filename before command execute" do
 | 
			
		||||
      doctor = Bundler::CLI::Doctor.new({})
 | 
			
		||||
      expect(doctor).to receive(:`).with("/usr/bin/otool -L \\$\\(date\\)\\ \\\"\\'\\\\.bundle").and_return("dummy string")
 | 
			
		||||
      doctor.dylibs_darwin('$(date) "\'\.bundle')
 | 
			
		||||
      expect(doctor).to receive(:`).with("/usr/bin/ldd \\$\\(date\\)\\ \\\"\\'\\\\.bundle").and_return("dummy string")
 | 
			
		||||
      doctor.dylibs_ldd('$(date) "\'\.bundle')
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue