Skip to content
Snippets Groups Projects
Changes 6.86 KiB
Newer Older
  • Learn to ignore specific revisions
  • Dave Rolsky's avatar
    Dave Rolsky committed
    0.31  2022-11-28
    
    
    - Fixed handling of the ::0/128 subnet. This is a special subnet(/address)
      that is called the "unspecified address". It is not public or
      routable. Reported by Dan Sherry. GH #13.
    
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.30  2021-03-29
    
    
    - Added some more details to the security docs to include mentions of the
    
      is_*_ip() functions too. See https://nvd.nist.gov/vuln/detail/CVE-2021-29662
      for details on the potential security issues with these functions.
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.29  2021-03-29
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    - Fixed a typo in the POD.
    
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.28  2021-03-29
    
    
    - Added docs about the security implications of using functions like
      is_private_ip4() without _also_ calling is_ipv4() first. This was inspired
      by a recent issue with the Node netmask package. See
      https://sick.codes/universal-netmask-npm-package-used-by-270000-projects-vulnerable-to-octal-input-data-server-side-request-forgery-remote-file-inclusion-local-file-inclusion-and-more-cve-2021-28918/
      for a write up.
    
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.27  2016-11-17
    
    
    - If your version of Socket.pm provides a sane inet_pton, most of the is_*_ip
      subroutines will use a much faster implementation. is_private_ipv4 and
      is_private_ipv4 are approximately 16x faster. is_private_ipv6 and
      is_public_ipv6 are about 3-4x faster.  Implemented by Greg Oschwald. GitHub
      PR #8.
    
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.26  2016-05-31
    
    
    - Fixed issue where invalid IPv6 strings such as ::0000000 would be marked as
      valid by is_ipv6() when using the faster inet_pton() code path (GitHub
      #6). Fixed by Greg Oschwald. GitHub PR #7.
    
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.25  2016-02-01
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    - Added is_ip(), is_public_ip(), is_private_ip(), is_linklocal_ip(),
      is_loopback_ip(), and is_multicast_ip(). These are similar to the existing
      subroutines but are IP address family agnostic. Implemented by Greg
      Oschwald. GitHub PR #5.
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - The subroutines included in this module now always return a scalar when
      called in list context. Previously they would generally return an empty list
      when validation failed. Implemented by Greg Oschwald. GitHub PR #5.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.24     2014-08-28
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - A string with a null byte (\0) would be considered valid if the internal
      implementation used inet_pton() to validate IP addresses. Fixed by Greg
      Oschwald. GitHub PR #4.
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.23     2014-03-09
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fixed is_ipv6 to correctly fail for a string like ":abcd" on platforms where
      inet_pton() isn't usable. Reported by Brian Bickerton. RT #93622.
    
    - As a side effect of the above, the code to check IPv6 addresses when
      inet_pton() isn't usable is about 7-8x times faster now.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.22     2013-12-05
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fixed some small doc typo/formatting issues.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.21     2013-12-05
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - The 198.51.100.0/24 and 203.0.113.0/24 networks were mistakenly put in the
      unroutable list, rather than the testnet list. This has been fixed. Note
      that if you've just been using is_public_ipv4 in your code, there are no
      changes in the results.
    
    - Added the 6to4 anycast network - 192.88.99.0/24. Addresses in this network
      are not considered public and there is now a new is_anycast_ipv4()
      subroutine exported.
    
    - Added a number of missing reserved IPv6 networks. These are the IPv4-mapped
      block (::ffff:0:0/96), the discard prefix (100::/64), TEREDO (2001::/32),
      ORCHID (2001:10::/28), and documentation (2001:db8::/32) IPv6
      networks. There are now is_ipv4_mapped_ipv6(), is_discard_ipv6(),
      is_teredo_ipv6(), is_orchid_ipv6(), and is_documentation_ipv6() subs. Note
      that the TEREDO and ORCHID networks are both subnets of the larger special
      network, and as such were already excluded by is_public_ipv6(), though
      arguably the TEREDO addresses _should_ be considered public.
    
    - Rewrote most of the docs to greatly reduce the amount of text and to improve
      the ToC on MetaCPAN and search.cpan.org.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.20     2013-07-13
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Add docs for the is_public_ipv6() sub that was added in 0.15. Reported by
      Greg Oschwald.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.19     2013-03-13
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fix a deprecation warning that showed up with Perl 5.10.1, but not with
      newer Perls. Reported by Iosif Fettich.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.18     2013-02-19
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Versions 0.15 - 0.17 still had $VERSION set to 0.14. Reported by Greg
      Oschwald.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.17     2013-02-19
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Previous releases broke is_innet_ipv4 for many network formats. This support
      has been restored, but only the "a.b.c.d/nn" CIDR form will be documented
      going forward. All other forms are deprecated, and support for them will be
      removed in a future release.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.16     2013-02-06
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Made the check for Socket.pm stricter. On some platforms it exports an
      inet_pton() that just dies when called. On other platforms it accepts
      invalid input like '016.17.184.1' or '2067::1:'.
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.15     2013-02-04
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - If your installed version of Socket.pm provides an inet_pton subroutine we
      use that to do validation. This is about 5x faster for IPv4 addresses and 20
      times faster for IPv6.
    
    - Various unroutable networks are now recognized as non-public
      addresses. Based on a patch by Greg Oschwald. (Bug#83081).
    
    - Added is_unroutable_ipv4 exported sub.
    
    - Added is_public_ipv6, is_private_ipv6, is_loopback_ipv6, is_multicast_ipv6,
      and is_special_ipv6 subroutines.
    
    - Fixed the is_linklocal_ipv6 method. It didn't recognize the full link-local
      range properly.
    
    - Fixed bug where '::' was not recognized as a valid IPv6 address. (Bug#81700)
    
    - Fixed bug where ipv6 related subroutines were not untainting their return
      value.
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.14     2011-01-06
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Cleaned up test suite (no code changes)
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.13     2011-01-06
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fixed unshorted ipv6 check when ipv4 address is trailing. (Bug#64532) Thanks
      to Milan Matlak <milan.matlak@sde.cz> for patch
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.12     2010-12-29
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fixed parsing of trailing :: (such as 2001::), as that is valid This address
      bug#58991 - Thanks to Alan.Chester@tekelec.com for identifying the problem.
    
    - Also fixed incorrectly treating 2001::1: as a valid IPv6 address when it
      isn't
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.11     2010-03-01
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Added support for is_innet_ipv4 - simple check to see if IP is in network.
      Thanks to "Bartłomiej Syryjczyk" <bartlomiej@syryjczyk.name> for suggesting
      the function
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.10     2009-06-04
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Added initial support for is_ipv6.  ipv6 is new territory for me, so please
      send in your bug reports to me so that I can make sure I get it done
      correctly.
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.09     2009-01-30
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Removed AUTOLOAD
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.08     2007-12-06
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Fixed is_ipv4 to treat leading 0's in an ip as invalid, i.e.: 017.1.1.1 is
      invalid.  Thanks to Joshua D. Abraham <jabra@spl0it.org> for submitting the
      patch
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.07     2007-05-17
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Added POD testing, and minor cleanup related to that
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.06     2007-05-16
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Updated contact information to be neil@neely.cx, this is a purely cosmetic change
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.05     2007-03-06
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Added is_multicast_ipv4 and is_linklocal_ipv4.  Thanks to Matt Dainty
      <matt@bodgit-n-scarper.com> for doing all the work
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.04     2005-04-28
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Removed perl version dependency in Makefile.PL
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.03     2005-03-04
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Minor fix to pod markup
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.02     2005-03-04
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Added is_private_ipv4 is_loopback_ipv4 is_testnet_ipv4 is_public_ipv4
    
    
    Neil Neely's avatar
    Neil Neely committed
    
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    0.01     2005-03-03
    
    Dave Rolsky's avatar
    Dave Rolsky committed
    
    - Original version; created by h2xs 1.23 with options -AXn Data::Validate::IP