Smack: Provide information for UDS getsockopt(SO_PEERCRED)
Subsystems (2)
Casey Schaufler
maintainerPATCH 1/1 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.
---
security/smack/smack_lsm.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
security/smack/smack_lsm.c +9 -0
@@ -2767,6 +2767,7 @@ static int smack_unix_stream_connect(struct sock *sock, {struct socket_smack *ssp = sock->sk_security;struct socket_smack *osp = other->sk_security; +struct socket_smack *nsp = newsk->sk_security;struct smk_audit_info ad;int rc =0 ;
@@ -2776,6 +2777,14 @@ static int smack_unix_stream_connect(struct sock *sock,if (!capable (CAP_MAC_OVERRIDE )) rc =smk_access (ssp->smk_out, osp->smk_in,MAY_WRITE , &ad); +/* +* Cross reference the peer labels for SO_PEERSEC. +*/ +if (rc ==0 ) { + nsp->smk_packet = ssp->smk_out; + ssp->smk_packet = osp->smk_out; + } +return rc; }
Quoted 10 lines · Casey Schaufler
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 <[email protected]>
Applied to git://gitorious.org/smack-next/kernel.git
Quoted 38 lines
---
security/smack/smack_lsm.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)security/smack/smack_lsm.c +9
-1@@ -2767,6 +2767,7 @@ static int smack_unix_stream_connect(struct sock *sock, {struct socket_smack *ssp = sock->sk_security;struct socket_smack *osp = other->sk_security; +struct socket_smack *nsp = newsk->sk_security;struct smk_audit_info ad;int rc =0 ;@@ -2776,6 +2777,14 @@ static int smack_unix_stream_connect(struct sock *sock,if (!capable (CAP_MAC_OVERRIDE )) rc =smk_access (ssp->smk_out, osp->smk_in,MAY_WRITE , &ad); +/* +* Cross reference the peer labels for SO_PEERSEC. +*/ +if (rc ==0 ) { + nsp->smk_packet = ssp->smk_out; + ssp->smk_packet = osp->smk_out; + } +return rc; } --To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html