summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2004-07-28 23:53:04 +0000
committerWez Furlong <wez@php.net>2004-07-28 23:53:04 +0000
commita0ef3e1865903cbcffab93fc9785602d9cbf0e08 (patch)
treeb8a4f45e13e7024d4a166f6e2158e60290d7dbff
parent4f916456421c00e59cd08cb5d1cf193f97286caa (diff)
downloadphp-git-a0ef3e1865903cbcffab93fc9785602d9cbf0e08.tar.gz
MFH: #29431
-rw-r--r--main/network.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/main/network.c b/main/network.c
index ee8567967f..1de7ff98c4 100644
--- a/main/network.c
+++ b/main/network.c
@@ -495,12 +495,15 @@ PHPAPI int php_network_parse_network_address_with_port(const char *addr, long ad
if (*addr == '[') {
colon = memchr(addr + 1, ']', addrlen-1);
if (!colon || colon[1] != ':') {
- return 0;
+ return FAILURE;
}
port = atoi(colon + 2);
addr++;
} else {
colon = memchr(addr, ':', addrlen);
+ if (!colon) {
+ return FAILURE;
+ }
port = atoi(colon + 1);
}
@@ -589,8 +592,8 @@ PHPAPI void php_network_populate_name_from_sockaddr(
/* generally not thread safe, but it *is* thread safe under win32 */
buf = inet_ntoa(((struct sockaddr_in*)sa)->sin_addr);
if (buf) {
- *textaddrlen = strlen(buf);
- *textaddr = estrndup(buf, *textaddrlen);
+ *textaddrlen = spprintf(textaddr, 0, "%s:%d",
+ buf, ntohs(((struct sockaddr_in*)sa)->sin_port));
}
break;
@@ -599,8 +602,8 @@ PHPAPI void php_network_populate_name_from_sockaddr(
case AF_INET6:
buf = (char*)inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, (char *)&abuf, sizeof(abuf));
if (buf) {
- *textaddrlen = strlen(buf);
- *textaddr = estrndup(buf, *textaddrlen);
+ *textaddrlen = spprintf(textaddr, 0, "%s:%d",
+ buf, ntohs(((struct sockaddr_in6*)sa)->sin6_port));
}
break;