summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-01-23 15:29:58 +0100
committerAndreas Kling <kling@serenityos.org>2021-01-23 16:45:05 +0100
commitf2ea6c3d4c32c0a6ed160980bf19219d64ddccab (patch)
tree74a301cc1dad7d18092fb2f3a560df7693f2cb34
parent86a9e26996455a3558b3b69ff2bc68454346400b (diff)
downloadserenity-f2ea6c3d4c32c0a6ed160980bf19219d64ddccab.zip
Ext2FS: Don't create a directory when asked to create a socket file
(mode & S_IFDIR) is not enough to check if "mode" is a directory, we have to check all the bits in the S_IFMT mask. Use the is_directory() helper to fix this bug.
-rw-r--r--Kernel/FileSystem/Ext2FileSystem.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp
index 53f44c1d4e..ad761c79d0 100644
--- a/Kernel/FileSystem/Ext2FileSystem.cpp
+++ b/Kernel/FileSystem/Ext2FileSystem.cpp
@@ -1043,7 +1043,7 @@ bool Ext2FSInode::write_directory(const Vector<Ext2FSDirectoryEntry>& entries)
KResultOr<NonnullRefPtr<Inode>> Ext2FSInode::create_child(const String& name, mode_t mode, dev_t dev, uid_t uid, gid_t gid)
{
- if (mode & S_IFDIR)
+ if (::is_directory(mode))
return fs().create_directory(identifier(), name, mode, uid, gid);
return fs().create_inode(identifier(), name, mode, 0, dev, uid, gid);
}