From b7b710c7c91009a0dd6c320fc123fe47cadcfc54 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Fri, 21 Sep 2018 14:32:44 -0400 Subject: [PATCH] webrick: raise EOFError in parse when read line is nil --- lib/webrick/httprequest.rb | 4 +++- test/webrick/test_httprequest.rb | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/webrick/httprequest.rb b/lib/webrick/httprequest.rb index c40f7c16e4..ac60c3937f 100644 --- a/lib/webrick/httprequest.rb +++ b/lib/webrick/httprequest.rb @@ -445,12 +445,14 @@ def meta_vars def read_request_line(socket) @request_line = read_line(socket, MAX_URI_LENGTH) if socket + raise HTTPStatus::EOFError unless @request_line + @request_bytes = @request_line.bytesize if @request_bytes >= MAX_URI_LENGTH and @request_line[-1, 1] != LF raise HTTPStatus::RequestURITooLarge end + @request_time = Time.now - raise HTTPStatus::EOFError unless @request_line if /^(\S+)\s+(\S++)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line @request_method = $1 @unparsed_uri = $2 diff --git a/test/webrick/test_httprequest.rb b/test/webrick/test_httprequest.rb index 6b99e34569..678efed1ca 100644 --- a/test/webrick/test_httprequest.rb +++ b/test/webrick/test_httprequest.rb @@ -422,4 +422,11 @@ def test_bad_messages req.body } end + + def test_eof_raised_when_line_is_nil + assert_raise(WEBrick::HTTPStatus::EOFError) { + req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) + req.parse(StringIO.new("")) + } + end end -- 2.19.0