5608 Commits
Author SHA1 Message Date
usa bbda1a0274 merge revision(s) 62968:
webrick: prevent response splitting and header injection

	Original patch by tenderlove (with minor style adjustments).

	* lib/webrick/httpresponse.rb (send_header): call check_header
	  (check_header): raise on embedded CRLF in header value
	* test/webrick/test_httpresponse.rb
	  (test_prevent_response_splitting_headers): new test
	* (test_prevent_response_splitting_cookie_headers): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:50:27 +00:00
usa a45622669b merge revision(s) 62960-62965:
webrick: use IO.copy_stream for multipart response

	Use the new Proc response body feature to generate a multipart
	range response dynamically.  We use a flat array to minimize
	object overhead as much as possible; as many ranges may fit
	into an HTTP request header.

	* lib/webrick/httpservlet/filehandler.rb (multipart_body): new method
	  (make_partial_content): use multipart_body
	------------------------------------------------------------------------
	r62960 | normal | 2018-03-28 17:06:23 +0900 (水, 28 3 2018) | 13 lines

	webrick/httprequest: limit request headers size

	We use the same 112 KB limit started (AFAIK) by Mongrel, Thin,
	and Puma to prevent malicious users from using up all the memory
	with a single request.  This also limits the damage done by
	excessive ranges in multipart Range: requests.

	Due to the way we rely on IO#gets and the desire to keep
	the code simple, the actual maximum header may be 4093 bytes
	larger than 112 KB, but we're splitting hairs at that point.

	* lib/webrick/httprequest.rb: define MAX_HEADER_LENGTH
	  (read_header): raise when headers exceed max length
	------------------------------------------------------------------------
	r62961 | normal | 2018-03-28 17:06:28 +0900 (水, 28 3 2018) | 9 lines

	webrick/httpservlet/cgihandler: reduce memory use

	WEBrick::HTTPRequest#body can be passed a block to process the
	body in chunks.  Use this feature to avoid building a giant
	string in memory.

	* lib/webrick/httpservlet/cgihandler.rb (do_GET):
	  avoid reading entire request body into memory
	  (do_POST is aliased to do_GET, so it handles bodies)
	------------------------------------------------------------------------
	r62962 | normal | 2018-03-28 17:06:34 +0900 (水, 28 3 2018) | 7 lines

	webrick/httprequest: raise correct exception

	"BadRequest" alone does not resolve correctly, it is in the
	HTTPStatus namespace.

	* lib/webrick/httprequest.rb (read_chunked): use correct exception
	* test/webrick/test_httpserver.rb (test_eof_in_chunk): new test
	------------------------------------------------------------------------
	r62963 | normal | 2018-03-28 17:06:39 +0900 (水, 28 3 2018) | 9 lines

	webrick/httprequest: use InputBufferSize for chunked requests

	While WEBrick::HTTPRequest#body provides a Proc interface
	for streaming large request bodies, clients must not force
	the server to use an excessively large chunk size.

	* lib/webrick/httprequest.rb (read_chunk_size): limit each
	  read and block.call to :InputBufferSize in config.
	* test/webrick/test_httpserver.rb (test_big_chunks): new test
	------------------------------------------------------------------------
	r62964 | normal | 2018-03-28 17:06:44 +0900 (水, 28 3 2018) | 9 lines

	webrick: add test for Digest auth-int

	No changes to the actual code, this is a new test for
	a feature for which no tests existed.  I don't understand
	the Digest authentication code well at all, but this is
	necessary for the subsequent change.

	* test/webrick/test_httpauth.rb (test_digest_auth_int): new test
	  (credentials_for_request): support bodies with POST
	------------------------------------------------------------------------
	r62965 | normal | 2018-03-28 17:06:49 +0900 (水, 28 3 2018) | 18 lines

	webrick/httpauth/digestauth: stream req.body

	WARNING! WARNING! WARNING!  LIKELY BROKEN CHANGE

	Pass a proc to WEBrick::HTTPRequest#body to avoid reading a
	potentially large request body into memory during
	authentication.

	WARNING! this will break apps completely which want to do
	something with the body besides calculating the MD5 digest
	of it.

	Also, keep in mind that probably nobody uses "auth-int".
	Servers such as Apache, lighttpd, nginx don't seem to
	support it; nor does curl when using POST/PUT bodies;
	and we didn't have tests for it until now...

	* lib/webrick/httpauth/digestauth.rb (_authenticate): stream req.body

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:47:30 +00:00
usa 19cb3fa9e0 merge revision(s) 60584,62954-62959,63008:
webrick: support Proc objects as body responses

	* lib/webrick/httpresponse.rb (send_body): call send_body_proc
	  (send_body_proc): new method
	  (class ChunkedWrapper): new class

	* test/webrick/test_httpresponse.rb (test_send_body_proc): new test
	  (test_send_body_proc_chunked): ditto
	  [Feature #855]

	webrick: favor .write over << method

	This will make the next change to use IO.copy_stream
	easier-to-read.  When we can drop Ruby 2.4 support in a few
	years, this will allow us to use writev(2) with multiple
	arguments for headers and chunked responses.

	* lib/webrick/cgi.rb (write): new wrapper method
	  lib/webrick/httpresponse.rb: (send_header): use socket.write
	  (send_body_io): ditto
	  (send_body_string): ditto
	  (send_body_proc): ditto
	  (_write_data): ditto
	  (ChunkedWrapper#write): ditto
	  (_send_file): ditto
	------------------------------------------------------------------------
	r62954 | normal | 2018-03-28 17:05:52 +0900 (水, 28 3 2018) | 14 lines

	webrick/httpresponse: IO.copy_stream for regular files

	Remove the redundant _send_file method since its functionality
	is unnecessary with IO.copy_stream.  IO.copy_stream also allows
	the use of sendfile under some OSes to speed up copies to
	non-TLS sockets.

	Testing with "curl >/dev/null" and "ruby -run -e httpd" to
	read a 1G file over Linux loopback reveals a reduction from
	around ~0.770 to ~0.490 seconds on the client side.

	* lib/webrick/httpresponse.rb (send_body_io): use IO.copy_stream
	  (_send_file): remove
	  [Feature #14237]
	------------------------------------------------------------------------
	r62955 | normal | 2018-03-28 17:05:57 +0900 (水, 28 3 2018) | 10 lines

	webrick: use IO.copy_stream for single range response

	This is also compatible with range responses generated
	by Rack::File (tested with rack 2.0.3).

	* lib/webrick/httpresponse.rb (send_body_io): use Content-Range
	* lib/webrick/httpservlet/filehandler.rb (make_partial_content):
	  use File object for the single range case
	* test/webrick/test_filehandler.rb (get_res_body): use send_body
	  to test result
	------------------------------------------------------------------------
	r62956 | normal | 2018-03-28 17:06:02 +0900 (水, 28 3 2018) | 7 lines

	test/webrick/test_filehandler.rb: stricter multipart range test

	We need to ensure we generate compatibile output in
	the face of future changes

	* test/webrick/test_filehandler.rb (test_make_partial_content):
	  check response body
	------------------------------------------------------------------------
	r62957 | normal | 2018-03-28 17:06:08 +0900 (水, 28 3 2018) | 8 lines

	webrick: quiet warning for multi-part ranges

	Content-Length is ignored by WEBrick::HTTPResponse even if we
	calculate it, so instead we chunk responses to HTTP/1.1 clients
	and terminate HTTP/1.0 connections.

	* lib/webrick/httpservlet/filehandler.rb (make_partial_content):
	  quiet warning
	------------------------------------------------------------------------
	r62958 | normal | 2018-03-28 17:06:13 +0900 (水, 28 3 2018) | 7 lines

	webrick/httpresponse: make ChunkedWrapper copy_stream-compatible

	The .write method needs to return the number of bytes written
	to avoid confusing IO.copy_stream.

	* lib/webrick/httpresponse.rb (ChunkedWrapper#write): return bytes written
	  (ChunkedWrapper#<<): return self
	------------------------------------------------------------------------
	r62959 | normal | 2018-03-28 17:06:18 +0900 (水, 28 3 2018) | 9 lines

	webrick: use IO.copy_stream for multipart response

	Use the new Proc response body feature to generate a multipart
	range response dynamically.  We use a flat array to minimize
	object overhead as much as possible; as many ranges may fit
	into an HTTP request header.

	* lib/webrick/httpservlet/filehandler.rb (multipart_body): new method
	  (make_partial_content): use multipart_body

	get rid of test error/failure on Windows introduced at r62955

	* lib/webrick/httpresponse.rb (send_body_io): use seek if NotImplementedError
	  is raised in IO.copy_stream with offset.

	* lib/webrick/httpservlet/filehandler.rb (multipart_body): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:44:20 +00:00
usa e9ddf2ba41 merge revision(s) 62990:
Ignore file separator from tmpfile/tmpdir name.

	From: SHIBATA Hiroshi <hsbt@ruby-lang.org>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:34:14 +00:00
usa 664b94fd2b merge revision(s) 58471,58493,62436: [Backport #13505]
load.c: backtrace of circular require

	* load.c (load_lock): print backtrace of circular require via
	  `Warning.warn` [ruby-core:80850] [Bug #13505]

	  Send the backtrace of the circular require warning as a single String to Warning.warn

	* load.c: send as a single string.
	* error.c: expose the string formatted by rb_warning as rb_warning_string().
	* test/ruby/test_exception.rb: update tests.
	  [ruby-core:80850] [Bug #13505]

	fix regexp literal warning.

	* test/rubygems/test_gem_server.rb: eliminate duplicated character class warning.
	  [Bug #14481]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@62441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-16 16:27:56 +00:00
usa 0207c68ea3 merge revision(s) 61242: [Backport #14185]
Fix a command injection vulnerability in Net::FTP.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@61246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-14 13:53:48 +00:00
usa fc824f2a81 merge revision(s) 60149: [Backport #14003]
Merge rubygems-2.6.14 changes.

	  It fixed http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@61244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-14 13:50:12 +00:00
usa 8a81d04d25 merge revision(s) 59897:
lib/webrick/log.rb: sanitize any type of logs

	It had failed to sanitize some type of exception messages.  Reported and
	patched by Yusuke Endoh (mame) at https://hackerone.com/reports/223363

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@59902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14 11:37:47 +00:00
usa 97c6e3934c * lib/rubygems: fix several vulnerabilities in RubyGems; bump to version
2.4.5.3. [Backport #13842]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@59805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-10 01:10:24 +00:00
usa b411090c86 merge revision(s) 53566:
* configure.in: improve ICC (Intel C Compiler) support.

	* configure.in (CXX): The name of icc's c++ compiler is `icpc`.

	* configure.in (warnings): Add `-diag-disable=2259` to suppress
	  noisy warnings: "non-pointer conversion from "..." to "..." may
	  lose significant bits".

	* configure.in (optflags): Add `-fp-model precise` like -fno-fast-math.

	* lib/mkmf.rb: icc supports -Werror=division-by-zero
	  and -Werror=deprecated-declarations, but doesn't support
	  -Wdivision-by-zero and -Wdeprecated-declarations.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-26 16:42:03 +00:00
usa d823f587d1 merge revision(s) 57887: [Backport #13159]
lib/ostruct.rb: [DOC] revise docs for OpenStruct

	* update paragraph on implementation:
	  define_singleton_method is used, not define_method
	* add call-seq with return values for each_pair
	* adopt description of dig from Array and Hash
	* fix description of the hash method
	* :nodoc: initialize_copy, respond_to_missing?
	* other small improvements, e.g. use the term `attribute' in the docs
	  (instead of `member'), which is clearer for users of the class
	* improve code examples: e.g. use more consistent style (always use
	  double quotes, drop `p' and `puts', ...), update inspect output,
	  use example data that is not prone to change (like population)
	* add more code examples
	* fix some small errors and grammar

	[ruby-core:79265] [Bug #13159]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 18:35:09 +00:00
usa 352b041dd3 merge revision(s) 57775: [Backport #13281]
nodoc OptParse

	* lib/optparse.rb: [DOC] nodoc OptParse, introduced with r46126,
	  to avoid leaking of its documentation (OptionParser's docs) into
	  the class documentation of Object.  [ruby-core:79909] [Bug #13281]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 18:28:27 +00:00
usa acc6a302e4 merge revision(s) 57640: [Backport #13214]
fileutils.rb: do not make root

	* lib/fileutils.rb (FileUtils#mkdir_p): no need to make root
	  directory which should be exist and cannot be made with mkdir
	  recent Cygwin can make a directory contains a colon.
	  [Bug #13214]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 18:24:28 +00:00
usa fc7fa64b0f merge revision(s) 57515: [Backport #13169]
lib/ostruct.rb: Fix returned value of each_pair.

	From a patch by Marcus Stollsteimer. [Fixes #13169]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 16:35:25 +00:00
usa e58af07655 merge revision(s) 57027: [Backport #13012]
ruby-lex.rb: fix for label

	* lib/irb/ruby-lex.rb (identify_identifier): treat identifier just
	  followed by a colon as a lable.  this is not a precise solution
	  but enough for the time being.  [ruby-core:78526] [Bug #13012]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 15:09:48 +00:00
usa a14ba6e3d5 merge revision(s) 53383,55366: [Backport #12478]
* lib/forwardable.rb (def_instance_delegator): adjust backtrace of
	  method body by tail call optimization.  adjusting the delegated
	  target is still done by deleting backtrace.

	* lib/forwardable.rb (def_single_delegator): ditto.

	* lib/forwardable.rb (Forwardable._delegator_method): extract
	  method generator and deal with non-module objects.
	  [ruby-dev:49656] [Bug #12478]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@58085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-25 14:43:16 +00:00
usa bb5114bc7e merge revision(s) 56596: [Backport #12890]
* lib/net/http.rb (transport_request): other than HTTPContinue
	  in 1xx (HTTPInformation) also needs to continue. [Bug #12890]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@56787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-14 18:40:30 +00:00
usa ad559b5c1c merge revision(s) 56374: [Backport #12822]
* lib/logger.rb (Logger::Period#next_rotate_time): fix monthly log
	  rotate when DST is applied during a month of 31 days.
	  [Fix GH-1458]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@56504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-27 07:47:14 +00:00
usa 0408976831 * lib/rubygems/ssl_certs/GlobalSignRootCA.pem: add for RubyGems.org.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@56367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-06 17:45:31 +00:00
usa 1631040517 merge revision(s) 56166: [Backport #12766]
* lib/uri/generic.rb (def check_password): don't include bad password
	  in URI exception output

	* test/uri/test_generic.rb (def test_set_component): test for behavior


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@56307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-30 15:57:06 +00:00
usa 4142e34eb1 merge revision(s) 55563: [Backport #12498]
* lib/uri/mailto.rb (initialize): RFC3986_Parser#split sets opaque
	  only if the URI has path-rootless, not path-empty.
	  [ruby-core:76055] [Bug #12498]
	  patched by Chris Heisterkamp <cheister@squareup.com>


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 12:02:37 +00:00
usa 0d09e1af49 merge revision(s) 55008: [Backport #12342]
* lib/drb/timeridconv.rb: don't use keeper thread. [Bug #12342]

	* test/drb/ut_timerholder.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 05:53:14 +00:00
usa 89594c0370 merge revision(s) 55731: [Backport #12610]
* lib/webrick/httpservlet/cgihandler.rb (do_GET): delete HTTP_PROXY

	* test/webrick/test_cgi.rb (test_cgi_env): new test

	* test/webrick/webrick.cgi (do_GET): new endpoint to dump env
	  [ruby-core:76511] [Bug #12610]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 04:41:26 +00:00
usa e4d360608e merge revision(s) 55726,55727: [Backport #12609]
* lib/rexml/attribute.rb (REXML::Attribute#to_string): Fix wrong
	  entry reference name of double quote.
	  [Bug#12609][ruby-core:76509]
	  Patch by Joseph Marrero. Thanks!!!
	  [Bug #12609][ruby-core:76509]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 04:39:33 +00:00
usa 36ecd73133 * lib/rubygems/package.rb: Fixed potential perms issue unpacking of
gems on NFS.  [Backport #12579]

* lib/rubygems.rb: bump version.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 04:31:31 +00:00
usa 26df8ea5bb merge revision(s) 55581,55582: [Backport #12557]
* lib/net/http/generic_rquest.rb (write_header): A Request-Line must
	  not contain CR or LF.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-12 02:46:40 +00:00
usa 9bfab3c125 merge revision(s) 55579: [Backport #12556]
* lib/net/ftp.rb (putline): raise an ArgumentError when
	  CR or LF is included in a line.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-12 02:43:36 +00:00
usa ef2c94bc39 Revert r55357 because of test failures.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-10 09:04:00 +00:00
usa 2c490bea5b merge revision(s) 55228: [Backport #12438]
* lib/optparse.rb (OptionParser::Completion.candidate): get rid of
	  nil as key names.  [ruby-core:75773] [Bug #12438]

	* lib/optparse.rb (OptionParser#make_switch): char class option
	  cannot be NoArgument, default to RequiredArgument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-10 08:49:54 +00:00
usa 9e7993794f * lib/rubygems/core_ext/kernel_require.rb: -I should always win over
gems.  [ruby-core:74814] [Backport #12248]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-10 07:20:59 +00:00
usa cb66eaab15 merge revision(s) 54144: [Backport #12139]
* lib/securerandom.rb (gen_random): to avoid blocking on Windows.
	  On Windows OpenSSL RAND_bytes (underlying implementation is
	  RAND_poll in crypto/rand/rand_win.c) may be blocked at
	  NetStatisticsGet.
	  https://wiki.openssl.org/index.php/Random_Numbers#Windows_Issues
	  Instead of this, use Random.raw_seed directory (whose implementation
	  CryptGenRandom is one of the source of
	  entropy of RAND_poll on Windows).
	  https://wiki.openssl.org/index.php/Random_Numbers
	  Note: CryptGenRandom function is PRNG and doesn't check its entropy,
	  so it won't block. [Bug #12139]
	  https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa379942.aspx
	  https://tools.ietf.org/html/rfc4086#section-7.1.3
	  https://eprint.iacr.org/2007/419.pdf
	  http://www.cs.huji.ac.il/~dolev/pubs/thesis/msc-thesis-leo.pdf


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-22 09:17:57 +00:00
usa 34a72a75ae merge revision(s) 54307: [Backport #12193]
* lib/rubygems/test_case.rb: Fix test on Windows for inconsistent temp path.
	  https://github.com/rubygems/rubygems/pull/1554
	  [Bug #12193][ruby-core:74431]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-22 09:15:03 +00:00
usa 4c81b10953 merge revision(s) 53381,53382,53511,53512: [Backport #11916]
* lib/forwardable.rb (def_instance_delegator) fix delegating to
	  'args' and 'block', clashing with local variables in generated
	  methods.  [ruby-core:72579] [Bug #11916]

	* lib/forwardable.rb (def_single_delegator): ditto.

	* lib/forwardable.rb: Convert given accessors to String.
	  r53381 changed to accept only Symbol or String for accessors, but
	  there are several rubygems that pass classes (e.g. Array,
	  Hash, ...) as accessors. Prior r53381, it was accepted because Class#to_s
	  returns its class name. After r53381 given accessors are checked
	  with define_method, but it accepts only Symbol or String, otherwise
	  raises TypeError.
	      def_delegator Foo, :some_method
	  This change is to revert unwanted incompatibility. But this behavior
	  may change in the future.
	  This change is to revert unexpected incompatibility. But this behavior


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-22 05:22:55 +00:00
nagachika 0e0c793e2e merge revision(s) 54257: [Backport #12215]
* lib/uri/http.rb (URI::HTTP#initialize): [DOC] fix example,
	  missing mandatory arguments.  [ruby-core:74540] [Bug #12215]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 20:13:52 +00:00
nagachika 7892ad93b6 merge revision(s) 49254: [Backport #10738]
* lib/uri/mailto.rb: raising URI::InvalidComponentError instead
	  of failing with undefined method `split' for nil:NilClass for
	  mailto: URIs without opaque part. [Bug #10738]

	* test/uri/testuri.rb: Test for above


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-28 17:23:34 +00:00
nagachika 920800b223 * lib/rubygems/installer.rb: merge partially r49511.
cherry picking https://github.com/rubygems/rubygems/commit/f9232680
  [Bug #12066]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-28 17:00:42 +00:00
nagachika 5840a393fb merge revision(s) 53810: [Backport #12044]
* net/ftp.rb: add NullSocket#closed? to fix closing not opened
	  connection.  [Fix GH-1232]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-28 16:06:29 +00:00
nagachika 3aa4a0b9f6 merge revision(s) 53943: [Backport #11969]
* lib/irb.rb: avoid to needless truncation when using back_trace_limit option.
	  [fix GH-1205][ruby-core:72773][Bug #11969]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-28 15:07:06 +00:00
nagachika 3d3ff04b3e merge revision(s) 53790,53844: [Backport #12054]
* lib/logger.rb: Remove block from Logger.add as it's not needed
	  patch provided by Daniel Lobato Garcia [fix GH-1240] [Bug #12054]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 15:25:13 +00:00
nagachika eb4ed0ecf6 merge revision(s) 53318: [Backport #11489]
* lib/xmlrpc/client.rb: Support SSL options in async methods of
	  XMLRPC::Client.
	  [Bug #11489]
	  Reported by Aleksandar Kostadinov. Thanks!!!


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 14:01:02 +00:00
nagachika 43739c725c merge revision(s) 52682: [Backport #11401] [Backport #11724]
* lib/net/http.rb: set hostname before call ossl_ssl_set_session.
	  [Bug #11401][ruby-core:70152][fix GH-964] Patch by @mkarnebeek


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@52785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-29 08:01:54 +00:00
nagachika e097b9b41b merge revision(s) 52244: [Backport #11513]
* lib/ipaddr.rb, test/test_ipaddr.rb: Reject invalid address contained
	  EOL string. Patch by @kachick [fix GH-942][Bug #11513]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@52741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-24 15:49:21 +00:00
nagachika ae2b1d2fe1 merge revision(s) 52683,52684: [Backport #11719] [Backport #11722]
* lib/net/http.rb: Fixed regression for Net::HTTP::PUT with "Expect-100"
	  header.

	* test/net/http/test_http.rb: added test.

	* Added missing reference of GitHub
	  header. [fix GH-949]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@52738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-24 15:04:36 +00:00
nagachika 3d6acf9d16 merge revision(s) 51766,51767: [Backport #11509]
* lib/rss/rss.rb (Time#w3cdtf): fix zero-trimmed width of fraction
	  digits.  [ruby-core:70667] [Bug #11509]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-29 18:45:50 +00:00
nagachika c732611149 merge revision(s) 50829: [Backport #11248]
* lib/rubygems.rb: bump version to 2.4.5.1. this version fixed
	  CVE-2015-3900.

	* lib/rubygems/remote_fetcher.rb: ditto.

	* test/rubygems/test_gem_remote_fetcher.rb: added testcase for CVE-2015-3900


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-17 14:20:34 +00:00
nagachika b76dad515e merge revision(s) 51046: [Backport #11260]
* lib/net/ftp.rb (makeport): close the TCPServer
	  when sending the port fails.

	* test/net/ftp/test_ftp.rb: test for above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-12 16:40:08 +00:00
nagachika 070afc692e merge revision(s) 51464,51465: [Backport #11058]
* lib/net/http/response.rb (Net::HTTPResponse#inflater):
	  fix TypeError. An exception object might be nil.
	  [ruby-core:68846] [Bug #11058]

	* lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish):
	  fix a bug that empty gzipped response body causes Zlib::BufError.
	  [ruby-core:68846] [Bug #11058]

	* test/net/http/test_httpresponse.rb: tests for the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-12 16:23:30 +00:00
nagachika 4027090682 merge revision(s) 51213: [Backport #11344]
* lib/timeout.rb (ExitException): removed internal exception class
	  and use Timeout::Error instead, as using throw/catch to isolate
	  each timeouts now.  [ruby-dev:49179] [Bug #11344]

	* lib/timeout.rb (ExitException): leave Timeout::ExitException as an
	  alias of Timeout::Error for backward compatibility in stable branch.
	  [ruby-dev:49179] [Bug #11344]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-10 17:08:37 +00:00
nagachika 3b90cf70d1 merge revision(s) 51061,51063,51091: [Backport #11285]
* lib/net/http/response.rb (inflater): CONTENT_ENCODING can be upper
	  case. [ruby-core:69670] [Bug #11285] patched by Andy Chu

	* test/net/http/test_httpresponse.rb
	(HTTPResponseTest#test_read_body_content_encoding_deflate_uppercase):
	fix a failure without zlib.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-10 16:47:03 +00:00
nagachika 9fa5924294 merge revision(s) 49788,49790: [Backport #10904]
* lib/time.rb (strptime): Support %s.%N.
	  [ruby-core:68301] [Bug #10904] Patch by Sadayuki Furuhashi.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-03 19:11:41 +00:00