summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <[email protected]>2025-04-24 10:14:01 +0900
committerHiroshi SHIBATA <[email protected]>2025-04-24 12:15:11 +0900
commitf0dda0534be8befd0d6223531f70df8b12ade9cc (patch)
tree5f86bc01a619b57dcb55082bb5bbf1f5e3bf5139
parenta23ce6d3a5c4a52ed302e6d335fd0721f1e38738 (diff)
Rewrite CGI.parse with URI.decode_www_form_component
Co-authored-by: Nobuyoshi Nakada <[email protected]>
-rw-r--r--lib/rubygems/gemcutter_utilities/webauthn_listener.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/rubygems/gemcutter_utilities/webauthn_listener.rb b/lib/rubygems/gemcutter_utilities/webauthn_listener.rb
index abf65efe37..7a692d9192 100644
--- a/lib/rubygems/gemcutter_utilities/webauthn_listener.rb
+++ b/lib/rubygems/gemcutter_utilities/webauthn_listener.rb
@@ -85,10 +85,17 @@ module Gem::GemcutterUtilities
end
def parse_otp_from_uri(uri)
- require "cgi"
+ query = uri.query
+ return unless query && !query.empty?
- return if uri.query.nil?
- CGI.parse(uri.query).dig("code", 0)
+ query.split('&') do |param|
+ key, value = param.split('=', 2)
+ if value && Gem::URI.decode_www_form_component(key) == "code"
+ return Gem::URI.decode_www_form_component(value)
+ end
+ end
+
+ nil
end
class SocketResponder