rack 2.2.23 → 2.2.24

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: f1956bc102141711f91a9f0daa1507098bd8b7ede58febde9472b875dcb0d4e4
4
- data.tar.gz: a8945afc610aed0c61ce8062e3b1394a24c6a457789637cc6835cfd881dac635
3
+ metadata.gz: 5905364bd5b40d622e2e10330911370ec92f23e5afa1aa58283c2f0cf9a5782d
4
+ data.tar.gz: '09c4da33251a32194f0a656767150eaa17367f8e42ee45735971e963d0e43991'
5
5
  SHA512:
6
- metadata.gz: afe4c41e29d6112ba8fe825b33b93d10317d576add705a72de25825caa504c21eefe86cf9308df573dd422cfb4aed24e9453ad4e92720188f4f98c4d2f04c5c4
7
- data.tar.gz: d28cd489644e2191917b28f39d689d384c21296e4f4a8a2bab7b1413f4110cb2092336039afc571d1278adbbfa4ebac9b2d27cb342b873336aa6efe037a93f4d
6
+ metadata.gz: 5ee4b678c01a6bb97074b87886498d8aa3bce9b61322cb95cc7908dec5e751fdfb8b238bc98956719505b394de21d1f6787d2593378b1fee4a6fe10b9aea3d5b
7
+ data.tar.gz: 032c32c7ebb220355578577fce8ad49c67f869b0ba60e533c3e1178b3265086d50e34de0912f00dc9bfdfb4042d446bc2b1ac8bc62916835521b4cf3786de341
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. For info on how to format all future additions to this file please reference [Keep A Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [2.2.24] - 2026-08-13
6
+
7
+ ### Security
8
+
9
+ - [CVE-2026-26962](https://github.com/advisories/GHSA-rx22-g9mx-qrhv) Improper unfolding of folded multipart headers preserves CRLF in parsed parameter values.
10
+
5
11
  ## [2.2.23] - 2026-04-01
6
12
 
7
13
  ### Security
@@ -24,6 +24,10 @@ module Rack
24
24
  private_constant :BOUNDARY_START_LIMIT
25
25
 
26
26
  MIME_HEADER_BYTESIZE_LIMIT = 64 * 1024
27
+
28
+ OBS_UNFOLD = /\r\n([ \t])/
29
+
30
+ private_constant :OBS_UNFOLD
27
31
  private_constant :MIME_HEADER_BYTESIZE_LIMIT
28
32
 
29
33
  env_int = lambda do |key, val|
@@ -310,14 +314,17 @@ module Rack
310
314
  def handle_mime_head
311
315
  if @sbuf.scan_until(@head_regex)
312
316
  head = @sbuf[1]
313
- content_type = head[MULTIPART_CONTENT_TYPE, 1]
314
- if name = head[MULTIPART_CONTENT_DISPOSITION, 1]
317
+ # Implement OBS unfolding (RFC 5322 Section 2.2.3). Done on a copy
318
+ # because content type, disposition and filename are extracted by regex.
319
+ unfolded_head = head.gsub(OBS_UNFOLD, '\\1')
320
+ content_type = unfolded_head[MULTIPART_CONTENT_TYPE, 1]
321
+ if name = unfolded_head[MULTIPART_CONTENT_DISPOSITION, 1]
315
322
  name = Rack::Auth::Digest::Params::dequote(name)
316
323
  else
317
- name = head[MULTIPART_CONTENT_ID, 1]
324
+ name = unfolded_head[MULTIPART_CONTENT_ID, 1]
318
325
  end
319
326
 
320
- filename = get_filename(head)
327
+ filename = get_filename(unfolded_head)
321
328
 
322
329
  if name.nil? || name.empty?
323
330
  name = filename || "#{content_type || TEXT_PLAIN}[]".dup
data/lib/rack/version.rb CHANGED
@@ -20,7 +20,7 @@ module Rack
20
20
  VERSION.join(".")
21
21
  end
22
22
 
23
- RELEASE = "2.2.23"
23
+ RELEASE = "2.2.24"
24
24
 
25
25
  # Return the Rack release as a dotted string.
26
26
  def self.release
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.23
4
+ version: 2.2.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leah Neukirchen
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0'
184
184
  requirements: []
185
- rubygems_version: 4.0.6
185
+ rubygems_version: 4.0.10
186
186
  specification_version: 4
187
187
  summary: A modular Ruby webserver interface.
188
188
  test_files: []