|
@@ -4569,6 +4569,18 @@ static int selinux_socket_post_create(struct socket *sock, int family,
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+static int selinux_socket_socketpair(struct socket *socka,
|
|
|
+ struct socket *sockb)
|
|
|
+{
|
|
|
+ struct sk_security_struct *sksec_a = socka->sk->sk_security;
|
|
|
+ struct sk_security_struct *sksec_b = sockb->sk->sk_security;
|
|
|
+
|
|
|
+ sksec_a->peer_sid = sksec_b->sid;
|
|
|
+ sksec_b->peer_sid = sksec_a->sid;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
/* Range of port numbers used to automatically bind.
|
|
|
Need to determine whether we should perform a name_bind
|
|
|
permission check between the socket and the port number. */
|
|
@@ -6999,6 +7011,7 @@ static struct security_hook_list selinux_hooks[] __lsm_ro_after_init = {
|
|
|
|
|
|
LSM_HOOK_INIT(socket_create, selinux_socket_create),
|
|
|
LSM_HOOK_INIT(socket_post_create, selinux_socket_post_create),
|
|
|
+ LSM_HOOK_INIT(socket_socketpair, selinux_socket_socketpair),
|
|
|
LSM_HOOK_INIT(socket_bind, selinux_socket_bind),
|
|
|
LSM_HOOK_INIT(socket_connect, selinux_socket_connect),
|
|
|
LSM_HOOK_INIT(socket_listen, selinux_socket_listen),
|