selinux: fix broken peer recv check
authorChad Hanson <chanson@trustedcs.com>
Wed, 11 Dec 2013 22:07:56 +0000 (17:07 -0500)
committerPaul Moore <pmoore@redhat.com>
Wed, 11 Dec 2013 22:07:56 +0000 (17:07 -0500)
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>
security/selinux/hooks.c

index a98228e7b91d75e9ec6e1b9609efe3c025ae7b3e..bf0537d78a7068d0f3b18e7c2109156d47891852 100644 (file)
@@ -4338,8 +4338,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) {