merge revision(s) 51016,53329: [Backport #11885]

* ext/openssl/ossl_ssl.c (ossl_ssl_read_internal):
	  do not process kwargs in blocking mode

	* test/openssl/test_ssl.rb: test sysread

	* io.c (io_getpartial): remove unused kwarg from template

	* test/ruby/test_io.rb (test_readpartial_bad_args): new
	  [Bug #11885]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2016-03-08 20:27:01 +00:00
parent e23a564ac6
commit 83d705f6a0
5 changed files with 35 additions and 3 deletions

View file

@ -1,3 +1,15 @@
Wed Mar 9 05:14:20 2016 Eric Wong <e@80x24.org>
* io.c (io_getpartial): remove unused kwarg from template
* test/ruby/test_io.rb (test_readpartial_bad_args): new
[Bug #11885]
Wed Mar 9 05:14:20 2016 Eric Wong <e@80x24.org>
* ext/openssl/ossl_ssl.c (ossl_ssl_read_internal):
do not process kwargs in blocking mode
* test/openssl/test_ssl.rb: test sysread
Wed Mar 9 04:21:02 2016 NAKAMURA Usaku <usa@ruby-lang.org> Wed Mar 9 04:21:02 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* process.c (rb_execarg_parent_start1): need to convert the encoding to * process.c (rb_execarg_parent_start1): need to convert the encoding to

View file

@ -1423,7 +1423,11 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
rb_io_t *fptr; rb_io_t *fptr;
VALUE opts = Qnil; VALUE opts = Qnil;
rb_scan_args(argc, argv, "11:", &len, &str, &opts); if (nonblock) {
rb_scan_args(argc, argv, "11:", &len, &str, &opts);
} else {
rb_scan_args(argc, argv, "11", &len, &str);
}
if (!NIL_P(opts) && Qfalse == rb_hash_aref(opts, sym_exception)) if (!NIL_P(opts) && Qfalse == rb_hash_aref(opts, sym_exception))
no_exception = 1; no_exception = 1;

4
io.c
View file

@ -2675,8 +2675,10 @@ io_read_nonblock(int argc, VALUE *argv, VALUE io)
rb_scan_args(argc, argv, "11:", NULL, NULL, &opts); rb_scan_args(argc, argv, "11:", NULL, NULL, &opts);
if (!NIL_P(opts) && Qfalse == get_kwargs_exception(opts)) if (!NIL_P(opts) && Qfalse == get_kwargs_exception(opts)) {
no_exception = 1; no_exception = 1;
argc--;
}
ret = io_getpartial(argc, argv, io, 1, no_exception); ret = io_getpartial(argc, argv, io, 1, no_exception);

View file

@ -60,6 +60,20 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
} }
end end
def test_ssl_sysread_blocking_error
start_server(OpenSSL::SSL::VERIFY_NONE, true) { |server, port|
server_connect(port) { |ssl|
ssl.write("abc\n")
assert_raise(TypeError) { ssl.sysread(4, exception: false) }
buf = ''
assert_raise(ArgumentError) { ssl.sysread(4, buf, exception: false) }
assert_equal '', buf
assert_equal buf.object_id, ssl.sysread(4, buf).object_id
assert_equal "abc\n", buf
}
}
end
def test_connect_and_close def test_connect_and_close
start_server(OpenSSL::SSL::VERIFY_NONE, true){|server, port| start_server(OpenSSL::SSL::VERIFY_NONE, true){|server, port|
sock = TCPSocket.new("127.0.0.1", port) sock = TCPSocket.new("127.0.0.1", port)

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.5" #define RUBY_VERSION "2.2.5"
#define RUBY_RELEASE_DATE "2016-03-09" #define RUBY_RELEASE_DATE "2016-03-09"
#define RUBY_PATCHLEVEL 249 #define RUBY_PATCHLEVEL 250
#define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 3 #define RUBY_RELEASE_MONTH 3