selinux: fix broken peer recv check
authorChad Hanson <chanson@trustedcs.com>
Mon, 23 Dec 2013 22:45:01 +0000 (17:45 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 15 Feb 2014 19:20:15 +0000 (19:20 +0000)
commit 46d01d63221c3508421dd72ff9c879f61053cffc upstream.

Fix a broken networking check. Return an error if peer recv fails.  If
secmark is active and the packet recv succeeds the peer recv error is
ignored.

Signed-off-by: Chad Hanson <chanson@trustedcs.com>
Signed-off-by: Paul Moore <pmoore@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
security/selinux/hooks.c

index 5898f34..b910072 100644 (file)
@@ -4181,8 +4181,10 @@ static int selinux_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
                }
                err = avc_has_perm(sk_sid, peer_sid, SECCLASS_PEER,
                                   PEER__RECV, &ad);
-               if (err)
+               if (err) {
                        selinux_netlbl_err(skb, err, 0);
+                       return err;
+               }
        }
 
        if (secmark_active) {