mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
[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:
parent
c3b215936d
commit
cd930de18d
1 changed files with 26 additions and 6 deletions
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue