[#66126] Creation/Conversion methods/functions table for Ruby types — SASADA Koichi <ko1@...>
Hi,
5 messages
2014/11/07
[#66248] [ruby-trunk - Feature #10423] [PATCH] opt_str_lit*: avoid literal string allocations — normalperson@...
Issue #10423 has been updated by Eric Wong.
3 messages
2014/11/13
[#66595] [ruby-trunk - Bug #10557] [Open] Block not given when the argument is a string — bartosz@...
Issue #10557 has been reported by Bartosz Kopinski.
3 messages
2014/11/30
[ruby-core:66239] [ruby-trunk - Feature #10503] [Open] introduce InvalidPercentEncoding error for failed URI parsing
From:
ruby@...
Date:
2014-11-13 00:06:45 UTC
List:
ruby-core #66239
Issue #10503 has been reported by Jack Danger.
----------------------------------------
Feature #10503: introduce InvalidPercentEncoding error for failed URI parsing
https://bugs.ruby-lang.org/issues/10503
* Author: Jack Danger
* Status: Open
* Priority: Normal
* Assignee:
* Category: lib
* Target version: current: 2.2.0
----------------------------------------
Currently an ArgumentError is raised if a URI has an invalid percent encoding. This makes it difficult to rescue safely. Here I'm adding a patch to introduce an InvalidPercentEncoding error that would help applications rescue and handle this specific problem.
~~~
Index: lib/uri/common.rb
===================================================================
--- lib/uri/common.rb (revision 48392)
+++ lib/uri/common.rb (working copy)
@@ -152,6 +152,10 @@
# URI is valid, bad usage is not.
#
class BadURIError < Error; end
+ #
+ # The "%"-encoding of a URI part is invalid
+ #
+ class InvalidPercentEncoding < ArgumentError; end
#
# == Synopsis
@@ -379,7 +383,7 @@
#
# See URI.encode_www_form_component, URI.decode_www_form
def self.decode_www_form_component(str, enc=Encoding::UTF_8)
- raise ArgumentError, "invalid %-encoding (#{str})" if /%(?!\h\h)/ =~ str
+ raise InvalidPercentEncoding, "invalid %-encoding (#{str})" if /%(?!\h\h)/ =~ str
str.b.gsub(/\+|%\h\h/, TBLDECWWWCOMP_).force_encoding(enc)
end
Index: test/uri/test_common.rb
===================================================================
--- test/uri/test_common.rb (revision 48392)
+++ test/uri/test_common.rb (working copy)
@@ -99,10 +99,10 @@
assert_equal("\xE3\x81\x82\xE3\x81\x82".force_encoding("UTF-8"),
URI.decode_www_form_component("\xE3\x81\x82%E3%81%82".force_encoding("UTF-8")))
- assert_raise(ArgumentError){URI.decode_www_form_component("%")}
- assert_raise(ArgumentError){URI.decode_www_form_component("%a")}
- assert_raise(ArgumentError){URI.decode_www_form_component("x%a_")}
- assert_nothing_raised(ArgumentError){URI.decode_www_form_component("x"*(1024*1024))}
+ assert_raise(InvalidPercentEncoding){URI.decode_www_form_component("%")}
+ assert_raise(InvalidPercentEncoding){URI.decode_www_form_component("%a")}
+ assert_raise(InvalidPercentEncoding){URI.decode_www_form_component("x%a_")}
+ assert_nothing_raised(InvalidPercentEncoding){URI.decode_www_form_component("x"*(1024*1024))}
end
def test_encode_www_form
~~~
---Files--------------------------------
raise_invalid_percent_encoding_error.diff (1.8 KB)
--
https://bugs.ruby-lang.org/