ruby-changes:15488
From: akr <ko1@a...>
Date: Sun, 18 Apr 2010 18:10:02 +0900 (JST)
Subject: [ruby-changes:15488] Ruby:r27389 (trunk): * lib/resolv.rb (Resolv::IPv4::Regex): make it only accept 0 to 255.
akr 2010-04-18 18:09:46 +0900 (Sun, 18 Apr 2010) New Revision: 27389 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27389 Log: * lib/resolv.rb (Resolv::IPv4::Regex): make it only accept 0 to 255. [ruby-core:29501] Added files: trunk/test/resolv/test_addr.rb Modified files: trunk/ChangeLog trunk/lib/resolv.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 27388) +++ ChangeLog (revision 27389) @@ -1,3 +1,8 @@ +Sun Apr 18 18:07:47 2010 Tanaka Akira <akr@f...> + + * lib/resolv.rb (Resolv::IPv4::Regex): make it only accept 0 to 255. + [ruby-core:29501] + Sun Apr 18 12:48:51 2010 Nobuyoshi Nakada <nobu@r...> * parse.y (parser_yylex): seems like a symbol-literal when spaces Index: lib/resolv.rb =================================================================== --- lib/resolv.rb (revision 27388) +++ lib/resolv.rb (revision 27389) @@ -2110,7 +2110,11 @@ ## # Regular expression IPv4 addresses must match. - Regex = /\A(\d+)\.(\d+)\.(\d+)\.(\d+)\z/ + Regex256 = /0 + |1(?:[0-9][0-9]?)? + |2(?:[0-4][0-9]?|5[0-5]?|[6-9])? + |[3-9][0-9]?/x + Regex = /\A(#{Regex256})\.(#{Regex256})\.(#{Regex256})\.(#{Regex256})\z/ def self.create(arg) case arg Index: test/resolv/test_addr.rb =================================================================== --- test/resolv/test_addr.rb (revision 0) +++ test/resolv/test_addr.rb (revision 27389) @@ -0,0 +1,16 @@ +require 'test/unit' +require 'resolv' +require 'socket' + +class TestResolvAddr < Test::Unit::TestCase + def test_invalid_ipv4_address + assert_not_match(Resolv::IPv4::Regex, "1.2.3.256", "[ruby-core:29501]") + 1000.times {|i| + if i < 256 + assert_match(Resolv::IPv4::Regex, "#{i}.#{i}.#{i}.#{i}") + else + assert_not_match(Resolv::IPv4::Regex, "#{i}.#{i}.#{i}.#{i}") + end + } + end +end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/