diff options
Diffstat (limited to 'security/selinux/hooks.c')
| -rw-r--r-- | security/selinux/hooks.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index c8b359fc294..b4e1ca021fc 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
| @@ -3915,7 +3915,6 @@ static int selinux_sock_rcv_skb_compat(struct sock *sk, struct sk_buff *skb, | |||
| 3915 | { | 3915 | { |
| 3916 | int err = 0; | 3916 | int err = 0; |
| 3917 | struct sk_security_struct *sksec = sk->sk_security; | 3917 | struct sk_security_struct *sksec = sk->sk_security; |
| 3918 | u32 peer_sid; | ||
| 3919 | u32 sk_sid = sksec->sid; | 3918 | u32 sk_sid = sksec->sid; |
| 3920 | struct common_audit_data ad; | 3919 | struct common_audit_data ad; |
| 3921 | char *addrp; | 3920 | char *addrp; |
| @@ -3934,20 +3933,10 @@ static int selinux_sock_rcv_skb_compat(struct sock *sk, struct sk_buff *skb, | |||
| 3934 | return err; | 3933 | return err; |
| 3935 | } | 3934 | } |
| 3936 | 3935 | ||
| 3937 | if (selinux_policycap_netpeer) { | 3936 | err = selinux_netlbl_sock_rcv_skb(sksec, skb, family, &ad); |
| 3938 | err = selinux_skb_peerlbl_sid(skb, family, &peer_sid); | 3937 | if (err) |
| 3939 | if (err) | 3938 | return err; |
| 3940 | return err; | 3939 | err = selinux_xfrm_sock_rcv_skb(sksec->sid, skb, &ad); |
| 3941 | err = avc_has_perm(sk_sid, peer_sid, | ||
| 3942 | SECCLASS_PEER, PEER__RECV, &ad); | ||
| 3943 | if (err) | ||
| 3944 | selinux_netlbl_err(skb, err, 0); | ||
| 3945 | } else { | ||
| 3946 | err = selinux_netlbl_sock_rcv_skb(sksec, skb, family, &ad); | ||
| 3947 | if (err) | ||
| 3948 | return err; | ||
| 3949 | err = selinux_xfrm_sock_rcv_skb(sksec->sid, skb, &ad); | ||
| 3950 | } | ||
| 3951 | 3940 | ||
| 3952 | return err; | 3941 | return err; |
| 3953 | } | 3942 | } |
| @@ -4442,9 +4431,8 @@ static unsigned int selinux_ip_postroute_compat(struct sk_buff *skb, | |||
| 4442 | SECCLASS_PACKET, PACKET__SEND, &ad)) | 4431 | SECCLASS_PACKET, PACKET__SEND, &ad)) |
| 4443 | return NF_DROP_ERR(-ECONNREFUSED); | 4432 | return NF_DROP_ERR(-ECONNREFUSED); |
| 4444 | 4433 | ||
| 4445 | if (selinux_policycap_netpeer) | 4434 | if (selinux_xfrm_postroute_last(sksec->sid, skb, &ad, proto)) |
| 4446 | if (selinux_xfrm_postroute_last(sksec->sid, skb, &ad, proto)) | 4435 | return NF_DROP_ERR(-ECONNREFUSED); |
| 4447 | return NF_DROP_ERR(-ECONNREFUSED); | ||
| 4448 | 4436 | ||
| 4449 | return NF_ACCEPT; | 4437 | return NF_ACCEPT; |
| 4450 | } | 4438 | } |
