mirror of
https://github.com/php/php-src.git
synced 2025-08-21 01:45:16 +02:00
fix segfault - error_string may be NULL, in this case we have to follow the old behavior
This commit is contained in:
parent
09c316399b
commit
ec101c1274
1 changed files with 18 additions and 6 deletions
|
@ -205,12 +205,20 @@ static int php_network_getaddresses(const char *host, int socktype, struct socka
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
if ((n = getaddrinfo(host, NULL, &hints, &res))) {
|
if ((n = getaddrinfo(host, NULL, &hints, &res))) {
|
||||||
spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n));
|
if (error_string) {
|
||||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n));
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
||||||
|
} else {
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n));
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} else if (res == NULL) {
|
} else if (res == NULL) {
|
||||||
spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed (null result pointer) errno=%d", errno);
|
if (error_string) {
|
||||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed (null result pointer) errno=%d", errno);
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
||||||
|
} else {
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: getaddrinfo failed (null result pointer)");
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,8 +242,12 @@ static int php_network_getaddresses(const char *host, int socktype, struct socka
|
||||||
/* XXX NOT THREAD SAFE (is safe under win32) */
|
/* XXX NOT THREAD SAFE (is safe under win32) */
|
||||||
host_info = gethostbyname(host);
|
host_info = gethostbyname(host);
|
||||||
if (host_info == NULL) {
|
if (host_info == NULL) {
|
||||||
spprintf(error_string, 0, "php_network_getaddresses: gethostbyname failed. errno=%d", errno);
|
if (error_string) {
|
||||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
spprintf(error_string, 0, "php_network_getaddresses: gethostbyname failed. errno=%d", errno);
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string);
|
||||||
|
} else {
|
||||||
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: gethostbyname failed");
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
in = *((struct in_addr *) host_info->h_addr);
|
in = *((struct in_addr *) host_info->h_addr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue