diff --git a/lib/mongo/protocol/message.rb b/lib/mongo/protocol/message.rb index 5ad433b346..9965f2425c 100644 --- a/lib/mongo/protocol/message.rb +++ b/lib/mongo/protocol/message.rb @@ -114,7 +114,7 @@ def self.deserialize(io, max_message_size = MAX_MESSAGE_SIZE) # Protection from potential DOS man-in-the-middle attacks. See # DRIVERS-276. - if length > max_message_size + if length > (max_message_size || MAX_MESSAGE_SIZE) raise Error::MaxMessageSize.new(max_message_size) end diff --git a/spec/mongo/protocol/reply_spec.rb b/spec/mongo/protocol/reply_spec.rb index a4d0255717..7e19128fbb 100644 --- a/spec/mongo/protocol/reply_spec.rb +++ b/spec/mongo/protocol/reply_spec.rb @@ -97,6 +97,19 @@ end end + context 'when the max message size is nil' do + + let(:reply) { described_class.deserialize(io, nil) } + + let(:length) { Mongo::Protocol::Message::MAX_MESSAGE_SIZE + 1 } + + it 'uses the default max message size for comparison' do + expect { + reply + }.to raise_error(Mongo::Error::MaxMessageSize) + end + end + describe 'response flags' do context 'no flags' do