rxrpc: Clear the unused part of a sockaddr_rxrpc for memcmp() use
Clear the unused part of a sockaddr_rxrpc structs so that memcmp() can be used to compare them. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -81,6 +81,8 @@ static int rxrpc_validate_address(struct rxrpc_sock *rx,
|
|||||||
struct sockaddr_rxrpc *srx,
|
struct sockaddr_rxrpc *srx,
|
||||||
int len)
|
int len)
|
||||||
{
|
{
|
||||||
|
unsigned tail;
|
||||||
|
|
||||||
if (len < sizeof(struct sockaddr_rxrpc))
|
if (len < sizeof(struct sockaddr_rxrpc))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@@ -103,9 +105,7 @@ static int rxrpc_validate_address(struct rxrpc_sock *rx,
|
|||||||
_debug("INET: %x @ %pI4",
|
_debug("INET: %x @ %pI4",
|
||||||
ntohs(srx->transport.sin.sin_port),
|
ntohs(srx->transport.sin.sin_port),
|
||||||
&srx->transport.sin.sin_addr);
|
&srx->transport.sin.sin_addr);
|
||||||
if (srx->transport_len > 8)
|
tail = offsetof(struct sockaddr_rxrpc, transport.sin.__pad);
|
||||||
memset((void *)&srx->transport + 8, 0,
|
|
||||||
srx->transport_len - 8);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
@@ -113,6 +113,8 @@ static int rxrpc_validate_address(struct rxrpc_sock *rx,
|
|||||||
return -EAFNOSUPPORT;
|
return -EAFNOSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tail < len)
|
||||||
|
memset((void *)srx + tail, 0, len - tail);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user