fix ip4_parse, ip6_parse
authorAlexey Andriyanov <alan@al-an.info>
Tue, 28 Jan 2014 09:34:30 +0000 (13:34 +0400)
committerAlexey Andriyanov <alan@al-an.info>
Tue, 28 Jan 2014 09:34:30 +0000 (13:34 +0400)
If inet_pton() supports IPv6, it is possible that ip4_parse('::')
will return 16-byte binary address.

wwwroot/inc/functions.php

index 273a724f7d8a2d16447f87d66000275162b4b69e..946f85bf64c7d20d9c33ce5484bb6fb9a5c179a8 100644 (file)
@@ -2203,7 +2203,7 @@ function ip4_parse ($ip)
 {
        if (is_inet_avail())
        {
-               if (FALSE !== ($ret = @inet_pton ($ip)))
+               if (FALSE !== ($ret = @inet_pton ($ip)) && strlen ($ret) == 4)
                        return $ret;
        }
        elseif (FALSE !== ($int = ip2long ($ip)))
@@ -2219,7 +2219,7 @@ function ip6_parse ($ip)
        do {
                if (is_inet6_avail())
                {
-                       if (FALSE !== ($ret = @inet_pton ($ip)))
+                       if (FALSE !== ($ret = @inet_pton ($ip)) && strlen ($ret) == 16)
                                return $ret;
                        break;
                }