diff options
Diffstat (limited to 'security/selinux/hooks.c')
-rw-r--r-- | security/selinux/hooks.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index d5fdcb0d26fe..c61787b15f27 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -4512,7 +4512,7 @@ static int selinux_socket_bind(struct socket *sock, struct sockaddr *address, in | |||
4512 | struct lsm_network_audit net = {0,}; | 4512 | struct lsm_network_audit net = {0,}; |
4513 | struct sockaddr_in *addr4 = NULL; | 4513 | struct sockaddr_in *addr4 = NULL; |
4514 | struct sockaddr_in6 *addr6 = NULL; | 4514 | struct sockaddr_in6 *addr6 = NULL; |
4515 | u16 family_sa = address->sa_family; | 4515 | u16 family_sa; |
4516 | unsigned short snum; | 4516 | unsigned short snum; |
4517 | u32 sid, node_perm; | 4517 | u32 sid, node_perm; |
4518 | 4518 | ||
@@ -4522,6 +4522,9 @@ static int selinux_socket_bind(struct socket *sock, struct sockaddr *address, in | |||
4522 | * need to check address->sa_family as it is possible to have | 4522 | * need to check address->sa_family as it is possible to have |
4523 | * sk->sk_family = PF_INET6 with addr->sa_family = AF_INET. | 4523 | * sk->sk_family = PF_INET6 with addr->sa_family = AF_INET. |
4524 | */ | 4524 | */ |
4525 | if (addrlen < offsetofend(struct sockaddr, sa_family)) | ||
4526 | return -EINVAL; | ||
4527 | family_sa = address->sa_family; | ||
4525 | switch (family_sa) { | 4528 | switch (family_sa) { |
4526 | case AF_UNSPEC: | 4529 | case AF_UNSPEC: |
4527 | case AF_INET: | 4530 | case AF_INET: |
@@ -4654,6 +4657,8 @@ static int selinux_socket_connect_helper(struct socket *sock, | |||
4654 | * need to check address->sa_family as it is possible to have | 4657 | * need to check address->sa_family as it is possible to have |
4655 | * sk->sk_family = PF_INET6 with addr->sa_family = AF_INET. | 4658 | * sk->sk_family = PF_INET6 with addr->sa_family = AF_INET. |
4656 | */ | 4659 | */ |
4660 | if (addrlen < offsetofend(struct sockaddr, sa_family)) | ||
4661 | return -EINVAL; | ||
4657 | switch (address->sa_family) { | 4662 | switch (address->sa_family) { |
4658 | case AF_INET: | 4663 | case AF_INET: |
4659 | addr4 = (struct sockaddr_in *)address; | 4664 | addr4 = (struct sockaddr_in *)address; |