Kernel+Tests: Remove inaccurate FIXME in sys$rmdir()

We were already handling the rmdir("..") case by refusing to remove
directories that were not empty.

This patch removes a FIXME from January 2019 and adds a test. :^)
This commit is contained in:
Andreas Kling 2022-12-19 18:53:20 +01:00
parent 8d781d0216
commit 8619f2c6f3
2 changed files with 19 additions and 2 deletions

View file

@ -847,8 +847,6 @@ ErrorOr<void> VirtualFileSystem::rmdir(Credentials const& credentials, StringVie
if (last_component == "."sv)
return EINVAL;
// FIXME: We should return ENOTEMPTY if the last component of the path is ".."
if (!inode.is_directory())
return ENOTDIR;

View file

@ -337,6 +337,25 @@ TEST_CASE(rmdir_dot)
EXPECT_EQ(rc, 0);
}
TEST_CASE(rmdir_dot_dot)
{
int rc = mkdir("/home/anon/rmdir-test-2", 0700);
EXPECT_EQ(rc, 0);
rc = mkdir("/home/anon/rmdir-test-2/foo", 0700);
EXPECT_EQ(rc, 0);
rc = rmdir("/home/anon/rmdir-test-2/foo/..");
EXPECT_NE(rc, 0);
EXPECT_EQ(errno, ENOTEMPTY);
rc = rmdir("/home/anon/rmdir-test-2/foo");
EXPECT_EQ(rc, 0);
rc = rmdir("/home/anon/rmdir-test-2");
EXPECT_EQ(rc, 0);
}
TEST_CASE(rmdir_while_inside_dir)
{
int rc = mkdir("/home/anon/testdir", 0700);