mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
Fix possible buffer overrun/corruption spotted by Fred.
This commit is contained in:
parent
35ef9423e0
commit
25b25080c3
2 changed files with 6 additions and 6 deletions
|
@ -33,7 +33,7 @@ typedef union {
|
||||||
struct sockaddr s;
|
struct sockaddr s;
|
||||||
struct sockaddr_in i4;
|
struct sockaddr_in i4;
|
||||||
#ifdef AF_INET6
|
#ifdef AF_INET6
|
||||||
struct sockaddr_in i6;
|
struct sockaddr_in6 i6;
|
||||||
#endif
|
#endif
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
struct sockaddr_un u;
|
struct sockaddr_un u;
|
||||||
|
|
|
@ -1561,7 +1561,7 @@ setNonBlocking(SOCKET fd)
|
||||||
if (result == nil && _address.s.sa_family != AF_UNSPEC)
|
if (result == nil && _address.s.sa_family != AF_UNSPEC)
|
||||||
{
|
{
|
||||||
SOCKET s = [self _sock];
|
SOCKET s = [self _sock];
|
||||||
struct sockaddr sin;
|
sockaddr_any sin;
|
||||||
socklen_t size = sizeof(sin);
|
socklen_t size = sizeof(sin);
|
||||||
|
|
||||||
memset(&sin, '\0', size);
|
memset(&sin, '\0', size);
|
||||||
|
@ -1569,7 +1569,7 @@ setNonBlocking(SOCKET fd)
|
||||||
{
|
{
|
||||||
if (getsockname(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
if (getsockname(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
||||||
{
|
{
|
||||||
result = GSPrivateSockaddrHost(&sin);
|
result = GSPrivateSockaddrHost((struct sockaddr*)&sin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ([key isEqualToString: GSStreamLocalPortKey])
|
else if ([key isEqualToString: GSStreamLocalPortKey])
|
||||||
|
@ -1577,14 +1577,14 @@ setNonBlocking(SOCKET fd)
|
||||||
if (getsockname(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
if (getsockname(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
||||||
{
|
{
|
||||||
result = [NSString stringWithFormat: @"%d",
|
result = [NSString stringWithFormat: @"%d",
|
||||||
(int)GSPrivateSockaddrPort(&sin)];
|
(int)GSPrivateSockaddrPort((struct sockaddr*)&sin)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ([key isEqualToString: GSStreamRemoteAddressKey])
|
else if ([key isEqualToString: GSStreamRemoteAddressKey])
|
||||||
{
|
{
|
||||||
if (getpeername(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
if (getpeername(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
||||||
{
|
{
|
||||||
result = GSPrivateSockaddrHost(&sin);
|
result = GSPrivateSockaddrHost((struct sockaddr*)&sin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ([key isEqualToString: GSStreamRemotePortKey])
|
else if ([key isEqualToString: GSStreamRemotePortKey])
|
||||||
|
@ -1592,7 +1592,7 @@ setNonBlocking(SOCKET fd)
|
||||||
if (getpeername(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
if (getpeername(s, (struct sockaddr*)&sin, (OPTLEN*)&size) != -1)
|
||||||
{
|
{
|
||||||
result = [NSString stringWithFormat: @"%d",
|
result = [NSString stringWithFormat: @"%d",
|
||||||
(int)GSPrivateSockaddrPort(&sin)];
|
(int)GSPrivateSockaddrPort((struct sockaddr*)&sin)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue