From ca4577284e377d5fac0a287ae628da309a5df4d0 Mon Sep 17 00:00:00 2001 From: Matheus Date: Fri, 30 Aug 2024 23:00:28 -0300 Subject: [PATCH] sockfs: check for configuration --- kernel-src/fs/sockfs.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel-src/fs/sockfs.c b/kernel-src/fs/sockfs.c index 80d22818..d8d675e2 100644 --- a/kernel-src/fs/sockfs.c +++ b/kernel-src/fs/sockfs.c @@ -8,6 +8,7 @@ #include #include #include +#include static scache_t *nodecache; static uintmax_t currentinode; @@ -81,6 +82,10 @@ int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result, c netdev_t *netdev = netdev_getdev(ifreq.name); if (netdev) { + e = auth_network_check(cred, AUTH_ACTIONS_NETWORK_CONFIGURE, NULL, netdev); + if (e) + return e; + sockaddr_t sockaddr; e = sock_convertaddress(&sockaddr, &ifreq.addr); if (e) @@ -149,7 +154,9 @@ int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result, c return ENOMEM; } - e = ipv4_addroute(netdev, addr.ipv4addr.addr, gateway.ipv4addr.addr, mask.ipv4addr.addr, abirtentry.rt_metric); + e = auth_network_check(cred, AUTH_ACTIONS_NETWORK_CONFIGURE, NULL, netdev); + if (e == 0) + e = ipv4_addroute(netdev, addr.ipv4addr.addr, gateway.ipv4addr.addr, mask.ipv4addr.addr, abirtentry.rt_metric); free(dev); return e;