Loading security/smack/smack_lsm.c +11 −13 Original line number Diff line number Diff line Loading @@ -1998,12 +1998,11 @@ static void smk_ipv6_port_label(struct socket *sock, struct sockaddr *address) * * Create or update the port list entry */ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, static int smk_ipv6_port_check(struct sock *sk, struct sockaddr_in6 *address, int act) { __be16 *bep; __be32 *be32p; struct sockaddr_in6 *addr6; struct smk_port_label *spp; struct socket_smack *ssp = sk->sk_security; struct smack_known *skp; Loading @@ -2025,10 +2024,9 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, /* * Get the IP address and port from the address. */ addr6 = (struct sockaddr_in6 *)address; port = ntohs(addr6->sin6_port); bep = (__be16 *)(&addr6->sin6_addr); be32p = (__be32 *)(&addr6->sin6_addr); port = ntohs(address->sin6_port); bep = (__be16 *)(&address->sin6_addr); be32p = (__be32 *)(&address->sin6_addr); /* * It's remote, so port lookup does no good. Loading Loading @@ -2060,9 +2058,9 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, ad.a.u.net->family = sk->sk_family; ad.a.u.net->dport = port; if (act == SMK_RECEIVING) ad.a.u.net->v6info.saddr = addr6->sin6_addr; ad.a.u.net->v6info.saddr = address->sin6_addr; else ad.a.u.net->v6info.daddr = addr6->sin6_addr; ad.a.u.net->v6info.daddr = address->sin6_addr; #endif return smk_access(skp, object, MAY_WRITE, &ad); } Loading Loading @@ -2201,7 +2199,8 @@ static int smack_socket_connect(struct socket *sock, struct sockaddr *sap, case PF_INET6: if (addrlen < sizeof(struct sockaddr_in6)) return -EINVAL; rc = smk_ipv6_port_check(sock->sk, sap, SMK_CONNECTING); rc = smk_ipv6_port_check(sock->sk, (struct sockaddr_in6 *)sap, SMK_CONNECTING); break; } return rc; Loading Loading @@ -3034,7 +3033,7 @@ static int smack_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size) { struct sockaddr_in *sip = (struct sockaddr_in *) msg->msg_name; struct sockaddr *sap = (struct sockaddr *) msg->msg_name; struct sockaddr_in6 *sap = (struct sockaddr_in6 *) msg->msg_name; int rc = 0; /* Loading Loading @@ -3121,9 +3120,8 @@ static struct smack_known *smack_from_secattr(struct netlbl_lsm_secattr *sap, return smack_net_ambient; } static int smk_skb_to_addr_ipv6(struct sk_buff *skb, struct sockaddr *sap) static int smk_skb_to_addr_ipv6(struct sk_buff *skb, struct sockaddr_in6 *sip) { struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; u8 nexthdr; int offset; int proto = -EINVAL; Loading Loading @@ -3181,7 +3179,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) struct netlbl_lsm_secattr secattr; struct socket_smack *ssp = sk->sk_security; struct smack_known *skp; struct sockaddr sadd; struct sockaddr_in6 sadd; int rc = 0; struct smk_audit_info ad; #ifdef CONFIG_AUDIT Loading Loading
security/smack/smack_lsm.c +11 −13 Original line number Diff line number Diff line Loading @@ -1998,12 +1998,11 @@ static void smk_ipv6_port_label(struct socket *sock, struct sockaddr *address) * * Create or update the port list entry */ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, static int smk_ipv6_port_check(struct sock *sk, struct sockaddr_in6 *address, int act) { __be16 *bep; __be32 *be32p; struct sockaddr_in6 *addr6; struct smk_port_label *spp; struct socket_smack *ssp = sk->sk_security; struct smack_known *skp; Loading @@ -2025,10 +2024,9 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, /* * Get the IP address and port from the address. */ addr6 = (struct sockaddr_in6 *)address; port = ntohs(addr6->sin6_port); bep = (__be16 *)(&addr6->sin6_addr); be32p = (__be32 *)(&addr6->sin6_addr); port = ntohs(address->sin6_port); bep = (__be16 *)(&address->sin6_addr); be32p = (__be32 *)(&address->sin6_addr); /* * It's remote, so port lookup does no good. Loading Loading @@ -2060,9 +2058,9 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address, ad.a.u.net->family = sk->sk_family; ad.a.u.net->dport = port; if (act == SMK_RECEIVING) ad.a.u.net->v6info.saddr = addr6->sin6_addr; ad.a.u.net->v6info.saddr = address->sin6_addr; else ad.a.u.net->v6info.daddr = addr6->sin6_addr; ad.a.u.net->v6info.daddr = address->sin6_addr; #endif return smk_access(skp, object, MAY_WRITE, &ad); } Loading Loading @@ -2201,7 +2199,8 @@ static int smack_socket_connect(struct socket *sock, struct sockaddr *sap, case PF_INET6: if (addrlen < sizeof(struct sockaddr_in6)) return -EINVAL; rc = smk_ipv6_port_check(sock->sk, sap, SMK_CONNECTING); rc = smk_ipv6_port_check(sock->sk, (struct sockaddr_in6 *)sap, SMK_CONNECTING); break; } return rc; Loading Loading @@ -3034,7 +3033,7 @@ static int smack_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size) { struct sockaddr_in *sip = (struct sockaddr_in *) msg->msg_name; struct sockaddr *sap = (struct sockaddr *) msg->msg_name; struct sockaddr_in6 *sap = (struct sockaddr_in6 *) msg->msg_name; int rc = 0; /* Loading Loading @@ -3121,9 +3120,8 @@ static struct smack_known *smack_from_secattr(struct netlbl_lsm_secattr *sap, return smack_net_ambient; } static int smk_skb_to_addr_ipv6(struct sk_buff *skb, struct sockaddr *sap) static int smk_skb_to_addr_ipv6(struct sk_buff *skb, struct sockaddr_in6 *sip) { struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; u8 nexthdr; int offset; int proto = -EINVAL; Loading Loading @@ -3181,7 +3179,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) struct netlbl_lsm_secattr secattr; struct socket_smack *ssp = sk->sk_security; struct smack_known *skp; struct sockaddr sadd; struct sockaddr_in6 sadd; int rc = 0; struct smk_audit_info ad; #ifdef CONFIG_AUDIT Loading