Skip to content

Commit b0009db

Browse files
committed
Fix ip2long in AIX to treat IPs with leading zeros as invalid like LINUX
1 parent 90cb181 commit b0009db

File tree

2 files changed

+2605
-0
lines changed

2 files changed

+2605
-0
lines changed

ext/standard/basic_functions.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,17 @@ PHP_FUNCTION(ip2long)
598598
if (addr_len == 0 || inet_pton(AF_INET, addr, &ip) != 1) {
599599
RETURN_FALSE;
600600
}
601+
#ifdef _AIX
602+
/*
603+
AIX accepts IP strings with excedentary 0 (192.168.042.42 will be treated as
604+
192.168.42.42), while Linux don't.
605+
For consistency, we convert back the IP to a string and check if it is equal to
606+
the original string. If not, the IP should be considered invalid.
607+
*/
608+
if (strcmp(addr, inet_ntoa(ip)) != 0) {
609+
RETURN_FALSE;
610+
}
611+
#endif
601612
RETURN_LONG(ntohl(ip.s_addr));
602613
}
603614
/* }}} */

0 commit comments

Comments
 (0)