From 1e5a40ff18b11704a27e07bf5f553c305d34cbcb Mon Sep 17 00:00:00 2001 From: normal Date: Sat, 1 Aug 2015 22:08:17 +0000 Subject: openssl/buffering: fix gets on EOF with limit * ext/openssl/lib/openssl/buffering.rb (gets): avoid comparing fixnum with nil * test/openssl/test_pair.rb: test gets with limit when EOF is hit Thanks to Bar Hofesh for the bug report and testing. [ruby-core:70149] [Bug #11400] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ ext/openssl/lib/openssl/buffering.rb | 2 +- test/openssl/test_pair.rb | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d077c1bc8a..7a3775f31b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sun Aug 2 07:01:17 2015 Eric Wong + + * ext/openssl/lib/openssl/buffering.rb (gets): + avoid comparing fixnum with nil + * test/openssl/test_pair.rb: test gets with limit when EOF is hit + Thanks to Bar Hofesh for the bug report + and testing. + [ruby-core:70149] [Bug #11400] + Sat Aug 1 17:13:15 2015 Kazuki Tsujimoto * lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish): diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb index 099e9603f6..63444cc45e 100644 --- a/ext/openssl/lib/openssl/buffering.rb +++ b/ext/openssl/lib/openssl/buffering.rb @@ -213,7 +213,7 @@ module OpenSSL::Buffering else size = idx ? idx+eol.size : nil end - if limit and limit >= 0 + if size && limit && limit >= 0 size = [size, limit].min end consume_rbuff(size) diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb index 8e4aefce31..977d11a259 100644 --- a/test/openssl/test_pair.rb +++ b/test/openssl/test_pair.rb @@ -110,6 +110,14 @@ module OpenSSL::TestPairM } end + def test_gets_eof_limit + ssl_pair {|s1, s2| + s1.write("hello") + s1.close # trigger EOF + assert_match "hello", s2.gets("\n", 6), "[ruby-core:70149] [Bug #11140]" + } + end + def test_readpartial ssl_pair {|s1, s2| s2.write "a\nbcd" -- cgit v1.2.3