Skip to content

Commit df65a73

Browse files
committed
Handle EOFError raised by Rack
1 parent e69b6b9 commit df65a73

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

lib/sinatra/base.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ def params
7878
super
7979
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
8080
raise BadRequest, "Invalid query parameters: #{Rack::Utils.escape_html(e.message)}"
81+
rescue EOFError => e
82+
raise BadRequest, "Invalid multipart/form-data: #{Rack::Utils.escape_html(e.message)}"
8183
end
8284

8385
class AcceptEntry

test/request_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ class RequestTest < Minitest::Test
1717
assert_equal 'bar', request.params['foo']
1818
end
1919

20+
it 'raises Sinatra::BadRequest when multipart/form-data request has no content' do
21+
request = Sinatra::Request.new(
22+
'REQUEST_METHOD' => 'POST',
23+
'CONTENT_TYPE' => 'multipart/form-data; boundary=dummy',
24+
'rack.input' => StringIO.new('')
25+
)
26+
assert_raises(Sinatra::BadRequest) { request.params }
27+
end
28+
2029
it 'is secure when the url scheme is https' do
2130
request = Sinatra::Request.new('rack.url_scheme' => 'https')
2231
assert request.secure?

0 commit comments

Comments
 (0)