diff options
author | Ben Wiederhake <BenWiederhake.GitHub@gmx.de> | 2021-10-30 00:45:23 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-10-31 12:06:28 +0100 |
commit | c05c5a7ff43388994a85ce84121cdcfa6ee741ba (patch) | |
tree | a255c368c51cf8cab2f005d6bc9a8dcc1b33d641 /Kernel/FileSystem/InodeFile.h | |
parent | 88ca12f037ffd9aedc884331c927f08d57e047cd (diff) | |
download | serenity-c05c5a7ff43388994a85ce84121cdcfa6ee741ba.zip |
Kernel: Clarify ambiguous {File,Description}::absolute_path
Found due to smelly code in InodeFile::absolute_path.
In particular, this replaces the following misleading methods:
File::absolute_path
This method *never* returns an actual path, and if called on an
InodeFile (which is impossible), it would VERIFY_NOT_REACHED().
OpenFileDescription::try_serialize_absolute_path
OpenFileDescription::absolute_path
These methods do not guarantee to return an actual path (just like the
other method), and just like Custody::absolute_path they do not
guarantee accuracy. In particular, just renaming the method made a
TOCTOU bug obvious.
The new method signatures use KResultOr, just like
try_serialize_absolute_path() already did.
Diffstat (limited to 'Kernel/FileSystem/InodeFile.h')
-rw-r--r-- | Kernel/FileSystem/InodeFile.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/FileSystem/InodeFile.h b/Kernel/FileSystem/InodeFile.h index a51e90f1d6..ec220bbf99 100644 --- a/Kernel/FileSystem/InodeFile.h +++ b/Kernel/FileSystem/InodeFile.h @@ -36,7 +36,7 @@ public: virtual KResultOr<Memory::Region*> mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; virtual KResult stat(::stat& buffer) const override { return inode().metadata().stat(buffer); } - virtual String absolute_path(const OpenFileDescription&) const override; + virtual KResultOr<NonnullOwnPtr<KString>> pseudo_path(const OpenFileDescription&) const override; virtual KResult truncate(u64) override; virtual KResult sync() override; |