4d237f
From e2c0652dff671dc6e16a80887e781edc0abc8454 Mon Sep 17 00:00:00 2001
4d237f
From: usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
4d237f
Date: Wed, 24 Nov 2021 11:41:55 +0000
4d237f
Subject: [PATCH 2/2] When parsing cookies, only decode the values
4d237f
4d237f
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
4d237f
---
4d237f
 lib/cgi/cookie.rb           | 1 -
4d237f
 test/cgi/test_cgi_cookie.rb | 5 +++++
4d237f
 2 files changed, 5 insertions(+), 1 deletion(-)
4d237f
4d237f
diff --git a/lib/cgi/cookie.rb b/lib/cgi/cookie.rb
4d237f
index a2155edb77..009566bb92 100644
4d237f
--- a/lib/cgi/cookie.rb
4d237f
+++ b/lib/cgi/cookie.rb
4d237f
@@ -165,7 +165,6 @@ def self.parse(raw_cookie)
4d237f
       raw_cookie.split(/;\s?/).each do |pairs|
4d237f
         name, values = pairs.split('=',2)
4d237f
         next unless name and values
4d237f
-        name = CGI.unescape(name)
4d237f
         values ||= ""
4d237f
         values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) }
4d237f
         if cookies.has_key?(name)
4d237f
diff --git a/test/cgi/test_cgi_cookie.rb b/test/cgi/test_cgi_cookie.rb
4d237f
index 115a57e4a1..985cc0d7a1 100644
4d237f
--- a/test/cgi/test_cgi_cookie.rb
4d237f
+++ b/test/cgi/test_cgi_cookie.rb
4d237f
@@ -101,6 +101,11 @@ def test_cgi_cookie_parse
4d237f
     end
4d237f
   end
4d237f
 
4d237f
+  def test_cgi_cookie_parse_not_decode_name
4d237f
+    cookie_str = "%66oo=baz;foo=bar"
4d237f
+    cookies = CGI::Cookie.parse(cookie_str)
4d237f
+    assert_equal({"%66oo" => ["baz"], "foo" => ["bar"]}, cookies)
4d237f
+  end
4d237f
 
4d237f
   def test_cgi_cookie_arrayinterface
4d237f
     cookie = CGI::Cookie.new('name1', 'a', 'b', 'c')
4d237f
-- 
4d237f
2.36.1
4d237f