forked from Minki/linux
SMACK: Add sk_clone_security LSM hook
Using smk_of_current() during sk_alloc_security hook leads in rare cases to a faulty initialization of the security context of the created socket. By adding the LSM hook sk_clone_security to SMACK this initialization fault is corrected by copying the security context of the old socket pointer to the newly cloned one. Co-authored-by: Martin Ostertag: <martin.ostertag@elektrobit.com> Signed-off-by: Lontke Michael <michael.lontke@elektrobit.com> Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
This commit is contained in:
parent
b90cb10531
commit
4ca165fc6c
@ -2278,6 +2278,21 @@ static void smack_sk_free_security(struct sock *sk)
|
||||
kfree(sk->sk_security);
|
||||
}
|
||||
|
||||
/**
|
||||
* smack_sk_clone_security - Copy security context
|
||||
* @sk: the old socket
|
||||
* @newsk: the new socket
|
||||
*
|
||||
* Copy the security context of the old socket pointer to the cloned
|
||||
*/
|
||||
static void smack_sk_clone_security(const struct sock *sk, struct sock *newsk)
|
||||
{
|
||||
struct socket_smack *ssp_old = sk->sk_security;
|
||||
struct socket_smack *ssp_new = newsk->sk_security;
|
||||
|
||||
*ssp_new = *ssp_old;
|
||||
}
|
||||
|
||||
/**
|
||||
* smack_ipv4host_label - check host based restrictions
|
||||
* @sip: the object end
|
||||
@ -4851,6 +4866,7 @@ static struct security_hook_list smack_hooks[] __lsm_ro_after_init = {
|
||||
LSM_HOOK_INIT(socket_getpeersec_dgram, smack_socket_getpeersec_dgram),
|
||||
LSM_HOOK_INIT(sk_alloc_security, smack_sk_alloc_security),
|
||||
LSM_HOOK_INIT(sk_free_security, smack_sk_free_security),
|
||||
LSM_HOOK_INIT(sk_clone_security, smack_sk_clone_security),
|
||||
LSM_HOOK_INIT(sock_graft, smack_sock_graft),
|
||||
LSM_HOOK_INIT(inet_conn_request, smack_inet_conn_request),
|
||||
LSM_HOOK_INIT(inet_csk_clone, smack_inet_csk_clone),
|
||||
|
Loading…
Reference in New Issue
Block a user