diff options
author | Andreas Kling <kling@serenityos.org> | 2021-01-23 15:29:58 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-23 16:45:05 +0100 |
commit | f2ea6c3d4c32c0a6ed160980bf19219d64ddccab (patch) | |
tree | 74a301cc1dad7d18092fb2f3a560df7693f2cb34 | |
parent | 86a9e26996455a3558b3b69ff2bc68454346400b (diff) | |
download | serenity-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.cpp | 2 |
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); } |