Fixed bug #49757 (long2ip() can return wrong value in a multi-threaded applications).

# original patch by Florian Anderiasch
This commit is contained in:
Ilia Alshanetsky 2009-10-05 14:45:54 +00:00
parent ffb07732f7
commit a3430a6b24
2 changed files with 13 additions and 0 deletions

2
NEWS
View File

@ -13,6 +13,8 @@ PHP NEWS
- Fixed a open_basedir bypass in posix_mkfifo() identified by Grzegorz
Stachowiak. (Rasmus)
- Fixed bug #49757 (long2ip() can return wrong value in a multi-threaded
applications). (Ilia, Florian Anderiasch)
- Fixed bug #49732 (crashes when using fileinfo when timestamp conversion
fails). (Pierre)
- Fixed bug #49698 (Unexpected change in strnatcasecmp()). (Rasmus)

View File

@ -3932,6 +3932,9 @@ PHP_FUNCTION(long2ip)
int ip_len;
unsigned long n;
struct in_addr myaddr;
#ifdef HAVE_INET_PTON
char str[40];
#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &ip, &ip_len) == FAILURE) {
return;
@ -3940,7 +3943,15 @@ PHP_FUNCTION(long2ip)
n = strtoul(ip, NULL, 0);
myaddr.s_addr = htonl(n);
#ifdef HAVE_INET_PTON
if (inet_ntop(AF_INET, &myaddr, str, sizeof(str))) {
RETURN_STRING(str, 1);
} else {
RETURN_FALSE;
}
#else
RETURN_STRING(inet_ntoa(myaddr), 1);
#endif
}
/* }}} */