1
0
mirror of https://github.com/solemnwarning/ipxwrapper synced 2024-12-30 16:45:37 +01:00

Added missing initialisations of ipx_socket.addr.sa_family.

Field not used internally, but returned by getsockname() which can lead to
whatever we're wrapping trying to use an invalid family later.
This commit is contained in:
Daniel Collins 2015-07-11 01:06:39 +01:00
parent 3b99400f4a
commit d582e27e3e
5 changed files with 12 additions and 0 deletions

View File

@ -3,6 +3,8 @@ Version 0.6.0:
the wire using WinPcap.
Bugfix: Include IPX socket number in address cache hash table key.
Bugfix: Correctly initialise local sa_family of SPX client sockets.
Version 0.5.0:
Bugfix: Allow address reuse when only the binding socket has SO_REUSEADDR.

View File

@ -536,6 +536,8 @@ int WSAAPI bind(SOCKET fd, const struct sockaddr *addr, int addrlen)
return -1;
}
sock->addr.sa_family = AF_IPX;
/* Resolve any wildcards in the requested address. */
if(!_resolve_bind_address(sock, &ipxaddr))
@ -1939,6 +1941,8 @@ static int _connect_spx(ipx_socket *sock, struct sockaddr_ipx *ipxaddr)
if(!(sock->flags & IPX_BOUND))
{
sock->addr.sa_family = AF_IPX;
struct sockaddr_in local_addr;
int addrlen = sizeof(local_addr);

View File

@ -74,6 +74,8 @@ int main(int argc, const char **argv)
int addrlen = sizeof(addr);
assert(getsockname(sock, (struct sockaddr*)(&addr), &addrlen) == 0);
assert(addr.sa_family == AF_IPX);
char bound_addr[IPX_SADDR_SIZE];
ipx_to_string(bound_addr,
addr32_in(addr.sa_netnum), addr48_in(addr.sa_nodenum), addr.sa_socket);

View File

@ -91,6 +91,8 @@ int main(int argc, char **argv)
assert(getsockname(sock, (struct sockaddr*)(&bound_addr), &addrlen) == 0);
assert(bound_addr.sa_family == AF_IPX);
char formatted_addr[IPX_SADDR_SIZE];
ipx_to_string(formatted_addr,
addr32_in(bound_addr.sa_netnum), addr48_in(bound_addr.sa_nodenum), bound_addr.sa_socket);

View File

@ -92,6 +92,8 @@ int main(int argc, char **argv)
int addrlen = sizeof(bind_addr);
assert(getsockname(sock, (struct sockaddr*)(&bind_addr), &addrlen) == 0);
assert(bind_addr.sa_family == AF_IPX);
char formatted_addr[IPX_SADDR_SIZE];
ipx_to_string(formatted_addr,
addr32_in(bind_addr.sa_netnum), addr48_in(bind_addr.sa_nodenum), bind_addr.sa_socket);