summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-06-20 14:47:15 -0700
committerJeremy Evans <code@jeremyevans.net>2019-09-27 07:43:32 -0700
commita2c26fe1c6d49b54494b7c6301cc4c77596eec0c (patch)
treecda2f7e4a2fa87795a5f9aa41758bf72e37b12bf
parent43a16c98df392e726040f0331a3e09d00c53d513 (diff)
Fix fallback in URI.encode_www_form_component to include #
Patch from Matthew Kerwin. Fixes [Bug #14358]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2494
-rw-r--r--lib/uri/common.rb2
-rw-r--r--test/uri/test_common.rb2
2 files changed, 3 insertions, 1 deletions
diff --git a/lib/uri/common.rb b/lib/uri/common.rb
index 17d9ffc28c..811ec98aad 100644
--- a/lib/uri/common.rb
+++ b/lib/uri/common.rb
@@ -370,7 +370,7 @@ module URI
if str.encoding != Encoding::ASCII_8BIT
if enc && enc != Encoding::ASCII_8BIT
str.encode!(Encoding::UTF_8, invalid: :replace, undef: :replace)
- str.encode!(enc, fallback: ->(x){"&#{x.ord};"})
+ str.encode!(enc, fallback: ->(x){"&##{x.ord};"})
end
str.force_encoding(Encoding::ASCII_8BIT)
end
diff --git a/test/uri/test_common.rb b/test/uri/test_common.rb
index 5bec21ca29..1afa35f93d 100644
--- a/test/uri/test_common.rb
+++ b/test/uri/test_common.rb
@@ -82,6 +82,8 @@ class TestCommon < Test::Unit::TestCase
"\u3042".encode("sjis"), Encoding::UTF_8))
assert_equal("B0", URI.encode_www_form_component(
"\u3042".encode("sjis"), Encoding::UTF_16LE))
+ assert_equal("%26%23730%3B", URI.encode_www_form_component(
+ "\u02DA", Encoding::WINDOWS_1252))
# invalid
assert_equal("%EF%BF%BD%EF%BF%BD", URI.encode_www_form_component(