Skip to content

Commit d90ba69

Browse files
mtth-bfftl0kod
authored andcommitted
landlock: Refactor TCP socket type check
Move the socket type check earlier, so that we will later be able to add elseifs for other types. Ordering of checks (socket is of a type we enforce restrictions on) / (current creds have Landlock restrictions) should not change anything. Signed-off-by: Matthieu Buffet <matthieu@buffet.re> Link: https://lore.kernel.org/r/20251212163704.142301-3-matthieu@buffet.re Signed-off-by: Mickaël Salaün <mic@digikod.net>
1 parent bbb6f53 commit d90ba69

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

security/landlock/net.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ static int current_check_access_socket(struct socket *const sock,
6262
if (!subject)
6363
return 0;
6464

65-
if (!sk_is_tcp(sock->sk))
66-
return 0;
67-
6865
/* Checks for minimal header length to safely read sa_family. */
6966
if (addrlen < offsetofend(typeof(*address), sa_family))
7067
return -EINVAL;
@@ -214,16 +211,30 @@ static int current_check_access_socket(struct socket *const sock,
214211
static int hook_socket_bind(struct socket *const sock,
215212
struct sockaddr *const address, const int addrlen)
216213
{
214+
access_mask_t access_request;
215+
216+
if (sk_is_tcp(sock->sk))
217+
access_request = LANDLOCK_ACCESS_NET_BIND_TCP;
218+
else
219+
return 0;
220+
217221
return current_check_access_socket(sock, address, addrlen,
218-
LANDLOCK_ACCESS_NET_BIND_TCP);
222+
access_request);
219223
}
220224

221225
static int hook_socket_connect(struct socket *const sock,
222226
struct sockaddr *const address,
223227
const int addrlen)
224228
{
229+
access_mask_t access_request;
230+
231+
if (sk_is_tcp(sock->sk))
232+
access_request = LANDLOCK_ACCESS_NET_CONNECT_TCP;
233+
else
234+
return 0;
235+
225236
return current_check_access_socket(sock, address, addrlen,
226-
LANDLOCK_ACCESS_NET_CONNECT_TCP);
237+
access_request);
227238
}
228239

229240
static struct security_hook_list landlock_hooks[] __ro_after_init = {

0 commit comments

Comments
 (0)