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");