aboutsummaryrefslogtreecommitdiffstats
path: root/security/smack
diff options
context:
space:
mode:
authorCasey Schaufler <casey@schaufler-ca.com>2011-09-26 17:43:39 -0400
committerCasey Schaufler <cschaufler@cschaufler-intel.(none)>2011-10-12 17:27:05 -0400
commit975d5e55c2e78b755bd0b92b71db1c241c5a2665 (patch)
tree7f39bc6c89720a5abdf617cd1e83c0904d04ec08 /security/smack
parentce8a432197d9892689eb4896f690b9fe6b3de598 (diff)
Smack: Provide information for UDS getsockopt(SO_PEERCRED)
This patch is targeted for the smack-next tree. This patch takes advantage of the recent changes for performance and points the packet labels on UDS connect at the output label of the far side. This makes getsockopt(...SO_PEERCRED...) function properly. Without this change the getsockopt does not provide any information. Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
Diffstat (limited to 'security/smack')
-rw-r--r--security/smack/smack_lsm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 6a822654132..dab8af17ef3 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -2773,6 +2773,7 @@ static int smack_unix_stream_connect(struct sock *sock,
2773{ 2773{
2774 struct socket_smack *ssp = sock->sk_security; 2774 struct socket_smack *ssp = sock->sk_security;
2775 struct socket_smack *osp = other->sk_security; 2775 struct socket_smack *osp = other->sk_security;
2776 struct socket_smack *nsp = newsk->sk_security;
2776 struct smk_audit_info ad; 2777 struct smk_audit_info ad;
2777 int rc = 0; 2778 int rc = 0;
2778 2779
@@ -2782,6 +2783,14 @@ static int smack_unix_stream_connect(struct sock *sock,
2782 if (!capable(CAP_MAC_OVERRIDE)) 2783 if (!capable(CAP_MAC_OVERRIDE))
2783 rc = smk_access(ssp->smk_out, osp->smk_in, MAY_WRITE, &ad); 2784 rc = smk_access(ssp->smk_out, osp->smk_in, MAY_WRITE, &ad);
2784 2785
2786 /*
2787 * Cross reference the peer labels for SO_PEERSEC.
2788 */
2789 if (rc == 0) {
2790 nsp->smk_packet = ssp->smk_out;
2791 ssp->smk_packet = osp->smk_out;
2792 }
2793
2785 return rc; 2794 return rc;
2786} 2795}
2787 2796