From 95ba9053e20ad8d113af37b3f1f4cbfff1f6a8f1 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 7 Jul 2021 10:38:10 +0000 Subject: Fix StartTLS stripping vulnerability Reported by Alexandr Savca in https://hackerone.com/reports/1178562 Co-authored-by: Shugo Maeda git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/net/imap.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 1c7e89ba14..91df89b79e 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -1215,12 +1215,14 @@ module Net end resp = @tagged_responses.delete(tag) case resp.name + when /\A(?:OK)\z/ni + return resp when /\A(?:NO)\z/ni raise NoResponseError, resp when /\A(?:BAD)\z/ni raise BadResponseError, resp else - return resp + raise UnknownResponseError, resp end end @@ -3716,6 +3718,10 @@ module Net class ByeResponseError < ResponseError end + # Error raised upon an unknown response from the server. + class UnknownResponseError < ResponseError + end + RESPONSE_ERRORS = Hash.new(ResponseError) RESPONSE_ERRORS["NO"] = NoResponseError RESPONSE_ERRORS["BAD"] = BadResponseError -- cgit v1.2.3