diff options
Diffstat (limited to 'lib/rubygems/gemcutter_utilities.rb')
-rw-r--r-- | lib/rubygems/gemcutter_utilities.rb | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb index 98e78fe341..464993b11f 100644 --- a/lib/rubygems/gemcutter_utilities.rb +++ b/lib/rubygems/gemcutter_utilities.rb @@ -1,4 +1,4 @@ -# frozen_string_literal: false +# frozen_string_literal: true require 'rubygems/remote_fetcher' ## @@ -69,9 +69,14 @@ module Gem::GemcutterUtilities terminate_interaction 1 # TODO: question this end - if allowed_push_host and self.host != allowed_push_host - alert_error "#{self.host.inspect} is not allowed by the gemspec, which only allows #{allowed_push_host.inspect}" - terminate_interaction 1 + if allowed_push_host + allowed_host_uri = URI.parse(allowed_push_host) + host_uri = URI.parse(self.host) + + unless (host_uri.scheme == allowed_host_uri.scheme) && (host_uri.host == allowed_host_uri.host) + alert_error "#{self.host.inspect} is not allowed by the gemspec, which only allows #{allowed_push_host.inspect}" + terminate_interaction 1 + end end uri = URI.parse "#{self.host}/#{path}" |