Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-rack for openSUSE:Factory checked in at 2023-03-21 17:41:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rack (Old) and /work/SRC/openSUSE:Factory/.rubygem-rack.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rack" Tue Mar 21 17:41:46 2023 rev:26 rq:1073283 version:3.0.7 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rack/rubygem-rack.changes 2023-03-09 17:46:55.807287996 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-rack.new.31432/rubygem-rack.changes 2023-03-21 17:41:46.933903209 +0100 @@ -1,0 +2,13 @@ +Mon Mar 20 11:53:21 UTC 2023 - pgaj...@suse.com + +- version update to 3.0.7 + [3.0.7] - 2023-03-16 + Make query parameters without = have nil values. (#2059, @jeremyevans) + [3.0.6.1] - 2023-03-13 + [CVE-2023-27539] Avoid ReDoS in header parsing [bsc#1209503] + [3.0.6] - 2023-03-13 + Add QueryParser#missing_value for handling missing values + tests. (#2052, @ioquatix) + [3.0.5] - 2023-03-13 + Split form/query parsing into two steps. (#2038, @matthewd) + +------------------------------------------------------------------- Old: ---- rack-3.0.4.2.gem New: ---- rack-3.0.7.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rack.spec ++++++ --- /var/tmp/diff_new_pack.0aFi7Y/_old 2023-03-21 17:41:47.437905620 +0100 +++ /var/tmp/diff_new_pack.0aFi7Y/_new 2023-03-21 17:41:47.441905639 +0100 @@ -24,7 +24,7 @@ # Name: rubygem-rack -Version: 3.0.4.2 +Version: 3.0.7 Release: 0 %define mod_name rack %define mod_full_name %{mod_name}-%{version} ++++++ rack-3.0.4.2.gem -> rack-3.0.7.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2023-03-02 23:56:21.000000000 +0100 +++ new/CHANGELOG.md 2023-03-16 03:22:41.000000000 +0100 @@ -2,6 +2,22 @@ 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/). +## [3.0.7] - 2023-03-16 + +- Make query parameters without `=` have `nil` values. ([#2059](https://github.com/rack/rack/pull/2059), [@jeremyevans]) + +## [3.0.6.1] - 2023-03-13 + +- [CVE-2023-27539] Avoid ReDoS in header parsing + +## [3.0.6] - 2023-03-13 + +- Add `QueryParser#missing_value` for handling missing values + tests. ([#2052](https://github.com/rack/rack/pull/2052), [@ioquatix]) + +## [3.0.5] - 2023-03-13 + +- Split form/query parsing into two steps. ([#2038](https://github.com/rack/rack/pull/2038), [@matthewd](https://github.com/matthewd)) + ## [3.0.4.1] - 2023-03-02 - [CVE-2023-27530] Introduce multipart_total_part_limit to limit total parts @@ -12,7 +28,7 @@ - [CVE-2022-44570] Fix ReDoS in Rack::Utils.get_byte_ranges - [CVE-2022-44572] Forbid control characters in attributes (also ReDoS) -## [3.0.4] - 2022-01-17 +## [3.0.4] - 2023-01-17 - `Rack::Request#POST` should consistently raise errors. Cache errors that occur when invoking `Rack::Request#POST` so they can be raised again later. ([#2010](https://github.com/rack/rack/pull/2010), [@ioquatix]) - Fix `Rack::Lint` error message for `HTTP_CONTENT_TYPE` and `HTTP_CONTENT_LENGTH`. ([#2007](https://github.com/rack/rack/pull/2007), [@byroot](https://github.com/byroot)) Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/query_parser.rb new/lib/rack/query_parser.rb --- old/lib/rack/query_parser.rb 2023-03-02 23:56:21.000000000 +0100 +++ new/lib/rack/query_parser.rb 2023-03-16 03:22:41.000000000 +0100 @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'uri' + module Rack class QueryParser DEFAULT_SEP = /[&] */n @@ -128,8 +130,6 @@ return if k.empty? - v ||= String.new - if after == '' if k == '[]' && depth != 0 return [v] @@ -190,8 +190,8 @@ true end - def unescape(s) - Utils.unescape(s) + def unescape(string, encoding = Encoding::UTF_8) + URI.decode_www_form_component(string, encoding) end class Params diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/request.rb new/lib/rack/request.rb --- old/lib/rack/request.rb 2023-03-02 23:56:21.000000000 +0100 +++ new/lib/rack/request.rb 2023-03-16 03:22:41.000000000 +0100 @@ -501,10 +501,20 @@ end begin - if get_header(RACK_INPUT).nil? - raise "Missing rack.input" - elsif get_header(RACK_REQUEST_FORM_INPUT) == get_header(RACK_INPUT) - get_header(RACK_REQUEST_FORM_HASH) + rack_input = get_header(RACK_INPUT) + + # If the form hash was already memoized: + if form_hash = get_header(RACK_REQUEST_FORM_HASH) + # And it was memoized from the same input: + if get_header(RACK_REQUEST_FORM_INPUT).equal?(rack_input) + return form_hash + end + end + + # Otherwise, figure out how to parse the input: + if rack_input.nil? + set_header RACK_REQUEST_FORM_INPUT, nil + set_header(RACK_REQUEST_FORM_HASH, {}) elsif form_data? || parseable_data? unless set_header(RACK_REQUEST_FORM_HASH, parse_multipart) form_vars = get_header(RACK_INPUT).read @@ -516,6 +526,7 @@ set_header RACK_REQUEST_FORM_VARS, form_vars set_header RACK_REQUEST_FORM_HASH, parse_query(form_vars, '&') end + set_header RACK_REQUEST_FORM_INPUT, get_header(RACK_INPUT) get_header RACK_REQUEST_FORM_HASH else @@ -634,8 +645,8 @@ end def parse_http_accept_header(header) - header.to_s.split(/\s*,\s*/).map do |part| - attribute, parameters = part.split(/\s*;\s*/, 2) + header.to_s.split(",").each(&:strip!).map do |part| + attribute, parameters = part.split(";", 2).each(&:strip!) quality = 1.0 if parameters and /\Aq=([\d.]+)/ =~ parameters quality = $1.to_f diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/version.rb new/lib/rack/version.rb --- old/lib/rack/version.rb 2023-03-02 23:56:21.000000000 +0100 +++ new/lib/rack/version.rb 2023-03-16 03:22:41.000000000 +0100 @@ -25,7 +25,7 @@ VERSION end - RELEASE = "3.0.4.2" + RELEASE = "3.0.7" # Return the Rack release as a dotted string. def self.release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack.rb new/lib/rack.rb --- old/lib/rack.rb 2023-03-02 23:56:21.000000000 +0100 +++ new/lib/rack.rb 2023-03-16 03:22:41.000000000 +0100 @@ -41,6 +41,7 @@ autoload :MethodOverride, "rack/method_override" autoload :Mime, "rack/mime" autoload :NullLogger, "rack/null_logger" + autoload :QueryParser, "rack/query_parser" autoload :Recursive, "rack/recursive" autoload :Reloader, "rack/reloader" autoload :RewindableInput, "rack/rewindable_input" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2023-03-02 23:56:21.000000000 +0100 +++ new/metadata 2023-03-16 03:22:41.000000000 +0100 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: rack version: !ruby/object:Gem::Version - version: 3.0.4.2 + version: 3.0.7 platform: ruby authors: - Leah Neukirchen autorequire: bindir: bin cert_chain: [] -date: 2023-03-02 00:00:00.000000000 Z +date: 2023-03-16 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: minitest @@ -164,7 +164,7 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubygems_version: 3.4.1 +rubygems_version: 3.4.6 signing_key: specification_version: 4 summary: A modular Ruby webserver interface.