rack 1.5.4 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rack might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/rack.rb +1 -1
- data/lib/rack/multipart/parser.rb +5 -4
- data/rack.gemspec +1 -1
- data/test/cgi/lighttpd.errors +1 -0
- data/test/multipart/three_files_three_fields +31 -0
- data/test/spec_multipart.rb +27 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddc7522db220a6e7fef72e5720df45c3e78a9b54
|
4
|
+
data.tar.gz: c0b77fe5d69c8bcfbd315494f00541e4e72d4f35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c9e7ad0586b57f002aab11b31758620c0c314ff77998500d67a6bf1b7eb6c6edcd74630a0642ea71a78da8866a281c9f74a3f540fd6a9296e1bb4cf7ea3dcbe
|
7
|
+
data.tar.gz: 51fb9d24391b01c03a9dcc0c1b7cf453d7d3320be8bc97ce9bf4a65656cbe820ae1edef3d587b3595ed64c6dabe3e31d86effb92b79a3461a78dbdeb874375d7
|
data/lib/rack.rb
CHANGED
@@ -18,14 +18,15 @@ module Rack
|
|
18
18
|
|
19
19
|
opened_files = 0
|
20
20
|
loop do
|
21
|
-
if Utils.multipart_part_limit > 0
|
22
|
-
raise MultipartLimitError, 'Maximum file multiparts in content reached' if opened_files >= Utils.multipart_part_limit
|
23
|
-
opened_files += 1
|
24
|
-
end
|
25
21
|
|
26
22
|
head, filename, content_type, name, body =
|
27
23
|
get_current_head_and_filename_and_content_type_and_name_and_body
|
28
24
|
|
25
|
+
if Utils.multipart_part_limit > 0
|
26
|
+
opened_files += 1 if filename
|
27
|
+
raise MultipartLimitError, 'Maximum file multiparts in content reached' if opened_files >= Utils.multipart_part_limit
|
28
|
+
end
|
29
|
+
|
29
30
|
# Save the rest.
|
30
31
|
if i = @buf.index(rx)
|
31
32
|
body << @buf.slice!(0, i)
|
data/rack.gemspec
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
2015-06-16 14:11:43: (log.c.164) server started
|
@@ -0,0 +1,31 @@
|
|
1
|
+
--AaB03x
|
2
|
+
content-disposition: form-data; name="reply"
|
3
|
+
|
4
|
+
yes
|
5
|
+
--AaB03x
|
6
|
+
content-disposition: form-data; name="to"
|
7
|
+
|
8
|
+
people
|
9
|
+
--AaB03x
|
10
|
+
content-disposition: form-data; name="from"
|
11
|
+
|
12
|
+
others
|
13
|
+
--AaB03x
|
14
|
+
content-disposition: form-data; name="fileupload1"; filename="file1.jpg"
|
15
|
+
Content-Type: image/jpeg
|
16
|
+
Content-Transfer-Encoding: base64
|
17
|
+
|
18
|
+
/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
|
19
|
+
--AaB03x
|
20
|
+
content-disposition: form-data; name="fileupload2"; filename="file2.jpg"
|
21
|
+
Content-Type: image/jpeg
|
22
|
+
Content-Transfer-Encoding: base64
|
23
|
+
|
24
|
+
/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
|
25
|
+
--AaB03x
|
26
|
+
content-disposition: form-data; name="fileupload3"; filename="file3.jpg"
|
27
|
+
Content-Type: image/jpeg
|
28
|
+
Content-Transfer-Encoding: base64
|
29
|
+
|
30
|
+
/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
|
31
|
+
--AaB03x--
|
data/test/spec_multipart.rb
CHANGED
@@ -389,6 +389,33 @@ Content-Type: image/jpeg\r
|
|
389
389
|
end
|
390
390
|
end
|
391
391
|
|
392
|
+
should "not reach a multi-part limit" do
|
393
|
+
begin
|
394
|
+
previous_limit = Rack::Utils.multipart_part_limit
|
395
|
+
Rack::Utils.multipart_part_limit = 4
|
396
|
+
|
397
|
+
env = Rack::MockRequest.env_for '/', multipart_fixture(:three_files_three_fields)
|
398
|
+
params = Rack::Multipart.parse_multipart(env)
|
399
|
+
params['reply'].should.equal 'yes'
|
400
|
+
params['to'].should.equal 'people'
|
401
|
+
params['from'].should.equal 'others'
|
402
|
+
ensure
|
403
|
+
Rack::Utils.multipart_part_limit = previous_limit
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
should "reach a multipart limit" do
|
408
|
+
begin
|
409
|
+
previous_limit = Rack::Utils.multipart_part_limit
|
410
|
+
Rack::Utils.multipart_part_limit = 3
|
411
|
+
|
412
|
+
env = Rack::MockRequest.env_for '/', multipart_fixture(:three_files_three_fields)
|
413
|
+
lambda { Rack::Multipart.parse_multipart(env) }.should.raise(Rack::Multipart::MultipartLimitError)
|
414
|
+
ensure
|
415
|
+
Rack::Utils.multipart_part_limit = previous_limit
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
392
419
|
should "return nil if no UploadedFiles were used" do
|
393
420
|
data = Rack::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}])
|
394
421
|
data.should.equal nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Neukirchen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bacon
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- test/cgi/assets/javascripts/app.js
|
146
146
|
- test/cgi/assets/stylesheets/app.css
|
147
147
|
- test/cgi/lighttpd.conf
|
148
|
+
- test/cgi/lighttpd.errors
|
148
149
|
- test/cgi/rackup_stub.rb
|
149
150
|
- test/cgi/sample_rackup.ru
|
150
151
|
- test/cgi/test
|
@@ -172,6 +173,7 @@ files:
|
|
172
173
|
- test/multipart/none
|
173
174
|
- test/multipart/semicolon
|
174
175
|
- test/multipart/text
|
176
|
+
- test/multipart/three_files_three_fields
|
175
177
|
- test/multipart/webkit
|
176
178
|
- test/rackup/config.ru
|
177
179
|
- test/registering_handler/rack/handler/registering_myself.rb
|