[WS2_32] Fix returned size of socketaddr on accepting connection. By Peter Hater. CORE-8549

svn path=/trunk/; revision=72909
This commit is contained in:
Amine Khaldi 2016-10-05 09:37:52 +00:00
parent c3b215936d
commit cd930de18d

View file

@ -874,11 +874,21 @@ GetNameInfoW(IN CONST SOCKADDR *pSockaddr,
{
DWORD AddressLength, AddrSize;
PVOID Addr;
SOCKADDR_IN Address;
SOCKADDR_IN6 Address;
INT ErrorCode = ERROR_SUCCESS;
DPRINT("GetNameInfoW: %p, %d, %p, %ld, %p, %ld, %d\n",
pSockaddr,
SockaddrLength,
pNodeBuffer,
NodeBufferSize,
pServiceBuffer,
ServiceBufferSize,
Flags);
/* Check for valid socket */
if (!pSockaddr) return EAI_FAIL;
if (!pSockaddr)
return WSAEFAULT;
/* Check which family this is */
if (pSockaddr->sa_family == AF_INET)
@ -902,7 +912,8 @@ GetNameInfoW(IN CONST SOCKADDR *pSockaddr,
}
/* Check for valid socket adress length */
if ((DWORD)SockaddrLength < AddressLength) return EAI_FAIL;
if ((DWORD)SockaddrLength < AddressLength)
return WSAEFAULT;
/* Check if we have a node name */
if (pNodeBuffer)
@ -934,7 +945,16 @@ GetNameInfoW(IN CONST SOCKADDR *pSockaddr,
RtlMoveMemory(&Address, pSockaddr, AddressLength);
/* Get the numeric address */
Address.sin_port = 0;
if (pSockaddr->sa_family == AF_INET)
{
/* IPv4 */
((PSOCKADDR_IN)&Address)->sin_port = 0;
}
else if (pSockaddr->sa_family == AF_INET6)
{
/* IPv6 */
((PSOCKADDR_IN6)&Address)->sin6_port = 0;
}
ErrorCode = WSAAddressToStringW((LPSOCKADDR)&Address,
AddressLength,
NULL,