mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Make ACL::ACLEntry not suppress IPAddr::InvalidPrefixError
This is because it would be a user error because a pattern containing a slash shouldn't be a host name pattern but an IP address pattern. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0fc3ae4a75
commit
49ce3ca374
3 changed files with 22 additions and 6 deletions
3
NEWS
3
NEWS
|
@ -134,6 +134,9 @@ with all sufficient information, see the ChangeLog file or Redmine
|
||||||
|
|
||||||
* Add Bundler to Standard Library. [Feature #12733]
|
* Add Bundler to Standard Library. [Feature #12733]
|
||||||
|
|
||||||
|
* DRb
|
||||||
|
* ACL::ACLEntry.new no longer suppresses IPAddr::InvalidPrefixError.
|
||||||
|
|
||||||
* ERB
|
* ERB
|
||||||
* Add ERB#result_with_hash to render a template with local variables passed
|
* Add ERB#result_with_hash to render a template with local variables passed
|
||||||
with a Hash object. [Feature #8631]
|
with a Hash object. [Feature #8631]
|
||||||
|
|
|
@ -49,6 +49,9 @@ class ACL
|
||||||
# +str+ may be "*" or "all" to match any address, an IP address string
|
# +str+ may be "*" or "all" to match any address, an IP address string
|
||||||
# to match a specific address, an IP address mask per IPAddr, or one
|
# to match a specific address, an IP address mask per IPAddr, or one
|
||||||
# containing "*" to match part of an IPv4 address.
|
# containing "*" to match part of an IPv4 address.
|
||||||
|
#
|
||||||
|
# IPAddr::InvalidPrefixError may be raised when an IP network
|
||||||
|
# address with an invalid netmask/prefix is given.
|
||||||
|
|
||||||
def initialize(str)
|
def initialize(str)
|
||||||
if str == '*' or str == 'all'
|
if str == '*' or str == 'all'
|
||||||
|
@ -58,6 +61,10 @@ class ACL
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@pat = [:ip, IPAddr.new(str)]
|
@pat = [:ip, IPAddr.new(str)]
|
||||||
|
rescue IPAddr::InvalidPrefixError
|
||||||
|
# In this case, `str` shouldn't be a host name pattern
|
||||||
|
# because it contains a slash.
|
||||||
|
raise
|
||||||
rescue ArgumentError
|
rescue ArgumentError
|
||||||
@pat = [:name, dot_pat(str)]
|
@pat = [:name, dot_pat(str)]
|
||||||
end
|
end
|
||||||
|
|
|
@ -66,9 +66,9 @@ class ACLEntryTest < Test::Unit::TestCase
|
||||||
assert_not_operator(a, :match, @hosts['localhost'])
|
assert_not_operator(a, :match, @hosts['localhost'])
|
||||||
assert_operator(a, :match, @hosts['yum'])
|
assert_operator(a, :match, @hosts['yum'])
|
||||||
|
|
||||||
a = ACL::ACLEntry.new('192.168.0.1/255.255.0.255')
|
a = ACL::ACLEntry.new('192.168.1.0/255.255.255.0')
|
||||||
assert_not_operator(a, :match, @hosts['localhost'])
|
assert_not_operator(a, :match, @hosts['localhost'])
|
||||||
assert_not_operator(a, :match, @hosts['yum'])
|
assert_operator(a, :match, @hosts['yum'])
|
||||||
assert_operator(a, :match, @hosts['x68k'])
|
assert_operator(a, :match, @hosts['x68k'])
|
||||||
|
|
||||||
a = ACL::ACLEntry.new('192.168.1.0/24')
|
a = ACL::ACLEntry.new('192.168.1.0/24')
|
||||||
|
@ -81,10 +81,14 @@ class ACLEntryTest < Test::Unit::TestCase
|
||||||
assert_not_operator(a, :match, @hosts['yum'])
|
assert_not_operator(a, :match, @hosts['yum'])
|
||||||
assert_not_operator(a, :match, @hosts['x68k'])
|
assert_not_operator(a, :match, @hosts['x68k'])
|
||||||
|
|
||||||
a = ACL::ACLEntry.new('127.0.0.1/255.0.0.255')
|
a = ACL::ACLEntry.new('127.0.0.0/255.0.0.0')
|
||||||
assert_operator(a, :match, @hosts['localhost'])
|
assert_operator(a, :match, @hosts['localhost'])
|
||||||
assert_not_operator(a, :match, @hosts['yum'])
|
assert_not_operator(a, :match, @hosts['yum'])
|
||||||
assert_not_operator(a, :match, @hosts['x68k'])
|
assert_not_operator(a, :match, @hosts['x68k'])
|
||||||
|
|
||||||
|
assert_raise(IPAddr::InvalidPrefixError) {
|
||||||
|
ACL::ACLEntry.new('192.168.0.0/33')
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_name
|
def test_name
|
||||||
|
@ -136,10 +140,12 @@ class ACLListTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_1
|
def test_1
|
||||||
a = build(%w(192.0.0.1/255.0.0.255 yum.*.jp))
|
a = build(%w(192.168.1.0/255.255.255.252 yum.*.jp))
|
||||||
assert_operator(a, :match, @hosts['yum'])
|
|
||||||
assert_operator(a, :match, @hosts['x68k'])
|
assert_operator(a, :match, @hosts['x68k'])
|
||||||
assert_not_operator(a, :match, @hosts['lc630'])
|
assert_operator(a, :match, @hosts['lc630'])
|
||||||
|
assert_operator(a, :match, @hosts['lib30'])
|
||||||
|
assert_not_operator(a, :match, @hosts['ns00'])
|
||||||
|
assert_operator(a, :match, @hosts['yum'])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_2
|
def test_2
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue