From: knu@... Date: 2017-10-21T08:20:18+00:00 Subject: [ruby-core:83437] [Ruby trunk Bug#13399] IPAddr accepts invalid address mask Issue #13399 has been updated by knu (Akinori MUSHA). Now I see! ``` % RBENV_VERSION=ruby_2_5 ruby -Itest/lib:lib test/drb/test_acl.rb Run options: # Running tests: [ 2/12] DRbTests::ACLEntryTest#test_ip = 0.00 s 1) Failure: DRbTests::ACLEntryTest#test_ip [test/drb/test_acl.rb:72]: Expected # to be match ["AF_INET", 10000, "x68k.linux.or.jp", "192.168.1.1"]. [ 5/12] DRbTests::ACLListTest#test_1 = 0.00 s 2) Failure: DRbTests::ACLListTest#test_1 [test/drb/test_acl.rb:141]: Expected #, #]> to be match ["AF_INET", 10000, "x68k.linux.or.jp", "192.168.1.1"]. Finished tests in 0.009075s, 1322.3140 tests/s, 8925.6198 assertions/s. 12 tests, 81 assertions, 2 failures, 0 errors, 0 skips ruby -v: ruby 2.5.0dev (2017-10-21 trunk 60228) [x86_64-darwin17] ``` ---------------------------------------- Bug #13399: IPAddr accepts invalid address mask https://bugs.ruby-lang.org/issues/13399#change-67404 * Author: rtib (Tibor Repasi) * Status: Assigned * Priority: Normal * Assignee: knu (Akinori MUSHA) * Target version: * ruby -v: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin15] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- API Class `IPAddr` can be initialised with e.g. '1.2.3.4/255.255.255.1', which is an invalid mask for an IPv4 address, however, `IPAddr.new` won't throw `ArgumentError`, nor `ip.ipv4?` will return `false`. ```ruby $ cat iptest.rb require 'ipaddr' begin ip = IPAddr.new('1.2.3.4/255.255.255.1') rescue ArgumentError puts 'ArgumentError was thrown' end puts 'IP address is valid' if ip.ipv4? ``` ``` $ ruby iptest.rb IP address is valid ``` ``` $ ipcalc 1.2.3.4/255.255.255.1 INVALID NETMASK INVALID MASK1: 255.255.255.1 Address: 1.2.3.4 00000001.00000010.00000011. 00000100 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 1.2.3.0/24 00000001.00000010.00000011. 00000000 HostMin: 1.2.3.1 00000001.00000010.00000011. 00000001 HostMax: 1.2.3.254 00000001.00000010.00000011. 11111110 Broadcast: 1.2.3.255 00000001.00000010.00000011. 11111111 Hosts/Net: 254 Class A -- https://bugs.ruby-lang.org/ Unsubscribe: