File rubygem-rack-CVE-2024-25126.patch of Package rubygem-rack.37788
Index: rack-2.0.8/lib/rack/media_type.rb
===================================================================
--- rack-2.0.8.orig/lib/rack/media_type.rb
+++ rack-2.0.8/lib/rack/media_type.rb
@@ -2,7 +2,7 @@ module Rack
# Rack::MediaType parse media type and parameters out of content_type string
class MediaType
- SPLIT_PATTERN = %r{\s*[;,]\s*}
+ SPLIT_PATTERN = /[;,]/
class << self
# The media type (type/subtype) portion of the CONTENT_TYPE header
@@ -13,7 +13,11 @@ module Rack
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
def type(content_type)
return nil unless content_type
- content_type.split(SPLIT_PATTERN, 2).first.downcase
+ if type = content_type.split(SPLIT_PATTERN, 2).first
+ type.rstrip!
+ type.downcase!
+ type
+ end
end
# The media type parameters provided in CONTENT_TYPE as a Hash, or
@@ -23,9 +27,13 @@ module Rack
# { 'charset' => 'utf-8' }
def params(content_type)
return {} if content_type.nil?
- Hash[*content_type.split(SPLIT_PATTERN)[1..-1].
- collect { |s| s.split('=', 2) }.
- map { |k,v| [k.downcase, strip_doublequotes(v)] }.flatten]
+
+ content_type.split(SPLIT_PATTERN)[1..-1].each_with_object({}) do |s, hsh|
+ s.strip!
+ k, v = s.split('=', 2)
+ k.downcase!
+ hsh[k] = strip_doublequotes(v)
+ end
end
private