aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/gemcutter_utilities.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/gemcutter_utilities.rb')
-rw-r--r--lib/rubygems/gemcutter_utilities.rb13
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}"