activesupport 8.0.4 → 8.0.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32beba8624850f5da4cad945a95adadbf26c3469dc4da4f231412b37b6fbc070
4
- data.tar.gz: 66eec5b8c43f67d79449762999acce95b9c73a93800197bdaca5f22033876819
3
+ metadata.gz: 4c9cda7e70f0c4b499dc6dadf103e87f3d7e8330879a0ee3a354228711b68fe7
4
+ data.tar.gz: d21140f0a85881f2534febd8e9f0bed0820a72c3a278543c4b1b7b7eeb6a2641
5
5
  SHA512:
6
- metadata.gz: 1eb3ea47ffa973a4c8378e804c7bf69e03013d39b30f73e5a80285672fa8aa1d109385ea3b9dff14f438d38e39ee47e6333567a385cd3bf0a64371b7e546757b
7
- data.tar.gz: f204a3f69b69120cd00b904589a0d6bdfbf0f9655c2f6fd20070af01799b1851dead84e44c9c3ef3af1f70e56cc4323de07dad8dc14128624aba904f48c9dd83
6
+ metadata.gz: 67213e140a1b59108ba6856958603c56472cfa0b6745e5b5479d3ab0b7be050daf8d15b4276ede433d721f2cf853f3ccec4908387a5c67ed4e9657d929f22621
7
+ data.tar.gz: 03af70c76a91cf42ca70bb7d7fce52b2c33e7b957bb2c3943399f714bedac5f522628beb95e8f50c8632564653717d7a10f0187cf1f3d33b21cc1ce2ff7446c4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## Rails 8.0.4.1 (March 23, 2026) ##
2
+
3
+ * Reject scientific notation in NumberConverter
4
+
5
+ [CVE-2026-33176]
6
+
7
+ *Jean Boussier*
8
+
9
+ * Fix `SafeBuffer#%` to preserve unsafe status
10
+
11
+ [CVE-2026-33170]
12
+
13
+ *Jean Boussier*
14
+
15
+ * Improve performance of NumberToDelimitedConverter
16
+
17
+ [CVE-2026-33169]
18
+
19
+ *Jean Boussier*
20
+
21
+
1
22
  ## Rails 8.0.4 (October 28, 2025) ##
2
23
 
3
24
  * Fix `Enumerable#sole` to return the full tuple instead of just the first element of the tuple.
@@ -128,7 +128,9 @@ module ActiveSupport # :nodoc:
128
128
  escaped_args = Array(args).map { |arg| explicit_html_escape_interpolated_argument(arg) }
129
129
  end
130
130
 
131
- self.class.new(super(escaped_args))
131
+ new_safe_buffer = self.class.new(super(escaped_args))
132
+ new_safe_buffer.instance_variable_set(:@html_safe, @html_safe)
133
+ new_safe_buffer
132
134
  end
133
135
 
134
136
  attr_reader :html_safe
@@ -10,7 +10,7 @@ module ActiveSupport
10
10
  MAJOR = 8
11
11
  MINOR = 0
12
12
  TINY = 4
13
- PRE = nil
13
+ PRE = "1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -180,7 +180,7 @@ module ActiveSupport
180
180
  when Float, Rational
181
181
  number.to_d(0)
182
182
  when String
183
- BigDecimal(number, exception: false)
183
+ BigDecimal(number, exception: false) unless number.to_s.match?(/[de]/i)
184
184
  else
185
185
  number.to_d rescue nil
186
186
  end
@@ -16,9 +16,24 @@ module ActiveSupport
16
16
  private
17
17
  def parts
18
18
  left, right = number.to_s.split(".")
19
- left.gsub!(delimiter_pattern) do |digit_to_delimit|
20
- "#{digit_to_delimit}#{options[:delimiter]}"
19
+ if delimiter_pattern
20
+ left.gsub!(delimiter_pattern) do |digit_to_delimit|
21
+ "#{digit_to_delimit}#{options[:delimiter]}"
22
+ end
23
+ else
24
+ left_parts = []
25
+ offset = left.size % 3
26
+ if offset > 0
27
+ left_parts << left[0, offset]
28
+ end
29
+
30
+ (left.size / 3).times do |i|
31
+ left_parts << left[offset + (i * 3), 3]
32
+ end
33
+
34
+ left = left_parts.join(options[:delimiter])
21
35
  end
36
+
22
37
  [left, right].compact
23
38
  end
24
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.4
4
+ version: 8.0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -90,6 +90,9 @@ dependencies:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: '5.1'
93
+ - - "<"
94
+ - !ruby/object:Gem::Version
95
+ version: '6'
93
96
  type: :runtime
94
97
  prerelease: false
95
98
  version_requirements: !ruby/object:Gem::Requirement
@@ -97,6 +100,9 @@ dependencies:
97
100
  - - ">="
98
101
  - !ruby/object:Gem::Version
99
102
  version: '5.1'
103
+ - - "<"
104
+ - !ruby/object:Gem::Version
105
+ version: '6'
100
106
  - !ruby/object:Gem::Dependency
101
107
  name: base64
102
108
  requirement: !ruby/object:Gem::Requirement
@@ -494,10 +500,10 @@ licenses:
494
500
  - MIT
495
501
  metadata:
496
502
  bug_tracker_uri: https://github.com/rails/rails/issues
497
- changelog_uri: https://github.com/rails/rails/blob/v8.0.4/activesupport/CHANGELOG.md
498
- documentation_uri: https://api.rubyonrails.org/v8.0.4/
503
+ changelog_uri: https://github.com/rails/rails/blob/v8.0.4.1/activesupport/CHANGELOG.md
504
+ documentation_uri: https://api.rubyonrails.org/v8.0.4.1/
499
505
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
500
- source_code_uri: https://github.com/rails/rails/tree/v8.0.4/activesupport
506
+ source_code_uri: https://github.com/rails/rails/tree/v8.0.4.1/activesupport
501
507
  rubygems_mfa_required: 'true'
502
508
  rdoc_options:
503
509
  - "--encoding"
@@ -515,7 +521,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
515
521
  - !ruby/object:Gem::Version
516
522
  version: '0'
517
523
  requirements: []
518
- rubygems_version: 3.6.9
524
+ rubygems_version: 4.0.6
519
525
  specification_version: 4
520
526
  summary: A toolkit of support libraries and Ruby core extensions extracted from the
521
527
  Rails framework.