From 2190b331e8e8831dc49ae5b6da5cf1f9c87bfe0c Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 24 Aug 2024 22:43:18 -0300 Subject: [PATCH] link: call VOP_ACCESS --- kernel-src/fs/vfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel-src/fs/vfs.c b/kernel-src/fs/vfs.c index 0e87567f..425b71e4 100644 --- a/kernel-src/fs/vfs.c +++ b/kernel-src/fs/vfs.c @@ -375,6 +375,10 @@ int vfs_link(vnode_t *destref, char *destpath, vnode_t *linkref, char *linkpath, if (err) goto cleanup; + err = VOP_ACCESS(parent, V_ACCESS_WRITE, getcred()); + if (err) + goto cleanup; + if (type == V_TYPE_REGULAR) { vnode_t *targetnode = NULL; err = vfs_lookup(&targetnode, destref, destpath, NULL, 0); @@ -388,9 +392,8 @@ int vfs_link(vnode_t *destref, char *destpath, vnode_t *linkref, char *linkpath, err = VOP_SYMLINK(parent, component, attr, destpath, getcred()); } - VOP_RELEASE(parent); - cleanup: + VOP_RELEASE(parent); free(component); return err; }