diff options
Diffstat (limited to 'lib/ipaddr.rb')
-rw-r--r-- | lib/ipaddr.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb index 03e1c18baa..07ef67a942 100644 --- a/lib/ipaddr.rb +++ b/lib/ipaddr.rb @@ -110,8 +110,13 @@ class IPAddr # Convert a network byte ordered string form of an IP address into # human readable form. + # It expects the string to be encoded in Encoding::ASCII_8BIT (BINARY). def self.ntop(addr) - case addr.size + if addr.is_a?(String) && addr.encoding != Encoding::BINARY + raise InvalidAddressError, "invalid encoding (given #{addr.encoding}, expected BINARY)" + end + + case addr.bytesize when 4 addr.unpack('C4').join('.') when 16 |