diff --git a/ChangeLog b/ChangeLog index dc16f98..ad21fe7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -324,6 +324,7 @@ Version 1.6.16 Treat large argument as error in UpnpAddVirtualDir. Do not clear buffer before snprintf. + For inet_ntop, use buffer with size INET6_ADDRSTRLEN or INET_ADDRSTRLEN. 2012-03-10 Yoichi NAKAYAMA diff --git a/upnp/src/api/upnpapi.c b/upnp/src/api/upnpapi.c index 33512c5..e22868c 100644 --- a/upnp/src/api/upnpapi.c +++ b/upnp/src/api/upnpapi.c @@ -3417,7 +3417,7 @@ int UpnpGetIfInfo(const char *IfName) struct in6_addr v6_addr; unsigned if_idx; char addr6[8][5]; - char buf[65]; /* INET6_ADDRSTRLEN */ + char buf[INET6_ADDRSTRLEN]; int ifname_found = 0; int valid_addr_found = 0; @@ -3777,7 +3777,7 @@ int PrintHandleInfo(UpnpClient_Handle Hnd) int getlocalhostname(char *out, size_t out_len) { int ret = UPNP_E_SUCCESS; - char tempstr[16]; + char tempstr[INET_ADDRSTRLEN]; const char *p = NULL; #ifdef WIN32 diff --git a/upnp/src/genlib/miniserver/miniserver.c b/upnp/src/genlib/miniserver/miniserver.c index d7b1f63..4b706c6 100644 --- a/upnp/src/genlib/miniserver/miniserver.c +++ b/upnp/src/genlib/miniserver/miniserver.c @@ -334,7 +334,7 @@ static int receive_from_stopSock(SOCKET ssock, fd_set *set) socklen_t clientLen; struct sockaddr_storage clientAddr; char requestBuf[256]; - char buf_ntop[64]; + char buf_ntop[INET6_ADDRSTRLEN]; if (FD_ISSET(ssock, set)) { clientLen = sizeof(clientAddr); diff --git a/upnp/src/ssdp/ssdp_device.c b/upnp/src/ssdp/ssdp_device.c index 24a0bc6..abdac8e 100644 --- a/upnp/src/ssdp/ssdp_device.c +++ b/upnp/src/ssdp/ssdp_device.c @@ -184,7 +184,7 @@ static int NewRequestHandler( /* a/c to UPNP Spec */ int ttl = 4; int hops = 1; - char buf_ntop[64]; + char buf_ntop[INET6_ADDRSTRLEN]; int ret = UPNP_E_SUCCESS; ReplySock = socket(DestAddr->sa_family, SOCK_DGRAM, 0); diff --git a/upnp/src/ssdp/ssdp_server.c b/upnp/src/ssdp/ssdp_server.c index dbe0efb..118b31c 100644 --- a/upnp/src/ssdp/ssdp_server.c +++ b/upnp/src/ssdp/ssdp_server.c @@ -705,7 +705,7 @@ void readFromSSDPSocket(SOCKET socket) ssdp_thread_data *data = NULL; socklen_t socklen = sizeof(__ss); ssize_t byteReceived = 0; - char ntop_buf[64]; + char ntop_buf[INET6_ADDRSTRLEN]; memset(&job, 0, sizeof(job)); diff --git a/upnp/src/urlconfig/urlconfig.c b/upnp/src/urlconfig/urlconfig.c index 26592b7..7ccb146 100644 --- a/upnp/src/urlconfig/urlconfig.c +++ b/upnp/src/urlconfig/urlconfig.c @@ -77,7 +77,7 @@ static UPNP_INLINE void addrToString( IN const struct sockaddr *addr, OUT char ipaddr_port[] ) { - char buf_ntop[64]; + char buf_ntop[INET6_ADDRSTRLEN]; if( addr->sa_family == AF_INET ) { struct sockaddr_in* sa4 = (struct sockaddr_in*)addr;