actionpack 7.2.0 → 7.2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/lib/action_controller/metal/http_authentication.rb +1 -4
- data/lib/action_dispatch/http/filter_parameters.rb +9 -4
- data/lib/action_dispatch/http/filter_redirect.rb +9 -2
- data/lib/action_dispatch/http/request.rb +23 -4
- data/lib/action_pack/gem_version.rb +2 -2
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa5e422c3ae8a04f0fac4410c72203218277a1b813047ad3ce5aa3274eac5a0e
|
4
|
+
data.tar.gz: 19620a0b88f940ae2a3183dbf20828228ae3f8fb567d32e715ba92fd9ea29db8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27b3549782fe4594a04571356362c11a03a1bf9e368fbf49662a1514cc170ec01f85be5085ffe77e62e57435702637db27f0502c118b7084d90d05f00e0d7a1a
|
7
|
+
data.tar.gz: d8ba844e9b95cf76ebcbc899678b2752f5f3ddbf3cb81a4ac94c86ed1f4bb5d3fd471f701e69779f9aee99bbd0612f5aa2ddf79e75d32735aab436f58ef99cb7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## Rails 7.2.1.1 (October 15, 2024) ##
|
2
|
+
|
3
|
+
* Avoid regex backtracking in HTTP Token authentication
|
4
|
+
|
5
|
+
[CVE-2024-47887]
|
6
|
+
|
7
|
+
* Avoid regex backtracking in query parameter filtering
|
8
|
+
|
9
|
+
[CVE-2024-41128]
|
10
|
+
|
11
|
+
## Rails 7.2.1 (August 22, 2024) ##
|
12
|
+
|
13
|
+
* Fix `Request#raw_post` raising `NoMethodError` when `rack.input` is `nil`.
|
14
|
+
|
15
|
+
*Hartley McGuire*
|
16
|
+
|
17
|
+
|
1
18
|
## Rails 7.2.0 (August 09, 2024) ##
|
2
19
|
|
3
20
|
* Allow bots to ignore `allow_browser`.
|
@@ -513,14 +513,11 @@ module ActionController
|
|
513
513
|
array_params.each { |param| (param[1] || +"").gsub! %r/^"|"$/, "" }
|
514
514
|
end
|
515
515
|
|
516
|
-
WHITESPACED_AUTHN_PAIR_DELIMITERS = /\s*#{AUTHN_PAIR_DELIMITERS}\s*/
|
517
|
-
private_constant :WHITESPACED_AUTHN_PAIR_DELIMITERS
|
518
|
-
|
519
516
|
# This method takes an authorization body and splits up the key-value pairs by
|
520
517
|
# the standardized `:`, `;`, or `\t` delimiters defined in
|
521
518
|
# `AUTHN_PAIR_DELIMITERS`.
|
522
519
|
def raw_params(auth)
|
523
|
-
_raw_params = auth.sub(TOKEN_REGEX, "").split(
|
520
|
+
_raw_params = auth.sub(TOKEN_REGEX, "").split(AUTHN_PAIR_DELIMITERS).map(&:strip)
|
524
521
|
_raw_params.reject!(&:empty?)
|
525
522
|
|
526
523
|
if !_raw_params.first&.start_with?(TOKEN_KEY)
|
@@ -68,12 +68,17 @@ module ActionDispatch
|
|
68
68
|
ActiveSupport::ParameterFilter.new(filters)
|
69
69
|
end
|
70
70
|
|
71
|
-
KV_RE = "[^&;=]+"
|
72
|
-
PAIR_RE = %r{(#{KV_RE})=(#{KV_RE})}
|
73
71
|
def filtered_query_string # :doc:
|
74
|
-
query_string.
|
75
|
-
|
72
|
+
parts = query_string.split(/([&;])/)
|
73
|
+
filtered_parts = parts.map do |part|
|
74
|
+
if part.include?("=")
|
75
|
+
key, value = part.split("=", 2)
|
76
|
+
parameter_filter.filter(key => value).first.join("=")
|
77
|
+
else
|
78
|
+
part
|
79
|
+
end
|
76
80
|
end
|
81
|
+
filtered_parts.join("")
|
77
82
|
end
|
78
83
|
end
|
79
84
|
end
|
@@ -37,9 +37,16 @@ module ActionDispatch
|
|
37
37
|
def parameter_filtered_location
|
38
38
|
uri = URI.parse(location)
|
39
39
|
unless uri.query.nil? || uri.query.empty?
|
40
|
-
uri.query.
|
41
|
-
|
40
|
+
parts = uri.query.split(/([&;])/)
|
41
|
+
filtered_parts = parts.map do |part|
|
42
|
+
if part.include?("=")
|
43
|
+
key, value = part.split("=", 2)
|
44
|
+
request.parameter_filter.filter(key => value).first.join("=")
|
45
|
+
else
|
46
|
+
part
|
47
|
+
end
|
42
48
|
end
|
49
|
+
uri.query = filtered_parts.join("")
|
43
50
|
end
|
44
51
|
uri.to_s
|
45
52
|
rescue URI::Error
|
@@ -340,7 +340,6 @@ module ActionDispatch
|
|
340
340
|
def raw_post
|
341
341
|
unless has_header? "RAW_POST_DATA"
|
342
342
|
set_header("RAW_POST_DATA", read_body_stream)
|
343
|
-
body_stream.rewind if body_stream.respond_to?(:rewind)
|
344
343
|
end
|
345
344
|
get_header "RAW_POST_DATA"
|
346
345
|
end
|
@@ -467,9 +466,29 @@ module ActionDispatch
|
|
467
466
|
end
|
468
467
|
|
469
468
|
def read_body_stream
|
470
|
-
|
471
|
-
|
472
|
-
|
469
|
+
if body_stream
|
470
|
+
reset_stream(body_stream) do
|
471
|
+
if headers.key?("Transfer-Encoding")
|
472
|
+
body_stream.read # Read body stream until EOF if "Transfer-Encoding" is present
|
473
|
+
else
|
474
|
+
body_stream.read(content_length)
|
475
|
+
end
|
476
|
+
end
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
480
|
+
def reset_stream(body_stream)
|
481
|
+
if body_stream.respond_to?(:rewind)
|
482
|
+
body_stream.rewind
|
483
|
+
|
484
|
+
content = yield
|
485
|
+
|
486
|
+
body_stream.rewind
|
487
|
+
|
488
|
+
content
|
489
|
+
else
|
490
|
+
yield
|
491
|
+
end
|
473
492
|
end
|
474
493
|
end
|
475
494
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.2.
|
4
|
+
version: 7.2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.2.
|
19
|
+
version: 7.2.1.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.2.
|
26
|
+
version: 7.2.1.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,28 +148,28 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - '='
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 7.2.
|
151
|
+
version: 7.2.1.1
|
152
152
|
type: :runtime
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - '='
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: 7.2.
|
158
|
+
version: 7.2.1.1
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: activemodel
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - '='
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: 7.2.
|
165
|
+
version: 7.2.1.1
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - '='
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: 7.2.
|
172
|
+
version: 7.2.1.1
|
173
173
|
description: Web apps on Rails. Simple, battle-tested conventions for building and
|
174
174
|
testing MVC web applications. Works with any Rack-compatible server.
|
175
175
|
email: david@loudthinking.com
|
@@ -369,12 +369,12 @@ licenses:
|
|
369
369
|
- MIT
|
370
370
|
metadata:
|
371
371
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
372
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.2.
|
373
|
-
documentation_uri: https://api.rubyonrails.org/v7.2.
|
372
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.2.1.1/actionpack/CHANGELOG.md
|
373
|
+
documentation_uri: https://api.rubyonrails.org/v7.2.1.1/
|
374
374
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
375
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.2.
|
375
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.2.1.1/actionpack
|
376
376
|
rubygems_mfa_required: 'true'
|
377
|
-
post_install_message:
|
377
|
+
post_install_message:
|
378
378
|
rdoc_options: []
|
379
379
|
require_paths:
|
380
380
|
- lib
|
@@ -390,8 +390,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
390
|
version: '0'
|
391
391
|
requirements:
|
392
392
|
- none
|
393
|
-
rubygems_version: 3.5.
|
394
|
-
signing_key:
|
393
|
+
rubygems_version: 3.5.16
|
394
|
+
signing_key:
|
395
395
|
specification_version: 4
|
396
396
|
summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).
|
397
397
|
test_files: []
|