From b2fb740d99c78a44864f5d03849c8666b225c9bd Mon Sep 17 00:00:00 2001 From: apio Date: Sat, 5 Nov 2022 12:09:01 +0100 Subject: [PATCH] Kernel: Refuse to mkdir any directory named . or .. --- kernel/src/fs/VFS.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/src/fs/VFS.cpp b/kernel/src/fs/VFS.cpp index ef0deae2..0c00e7db 100644 --- a/kernel/src/fs/VFS.cpp +++ b/kernel/src/fs/VFS.cpp @@ -152,6 +152,11 @@ int VFS::mkdir(const char* path, const char* name) kwarnln("Chosen node does not support finddir()"); return -ENOTSUP; } + if (!strncmp(name, ".", strlen(name)) || !strncmp(name, "..", strlen(name))) + { + kwarnln("Attempted to mkdir . or .., which already exist"); + return -EEXIST; + } if (node->find_func(node, name) != nullptr) { kwarnln("Already exists"); @@ -183,6 +188,11 @@ int VFS::do_mkdir(const char* path, const char* name, int uid, int gid, mode_t m kwarnln("Chosen node does not support finddir()"); return -ENOTSUP; } + if (!strncmp(name, ".", strlen(name)) || !strncmp(name, "..", strlen(name))) + { + kwarnln("Attempted to mkdir . or .., which already exist"); + return -EEXIST; + } if (node->find_func(node, name) != nullptr) { kwarnln("Already exists");