From d2d6ab40f9895ac047ca08c98dbd2d7848f2ad41 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Fri, 28 May 2021 05:39:40 -0700 Subject: [PATCH] Kernel: Make AnonymousFile::create API OOM safe --- Kernel/FileSystem/AnonymousFile.h | 4 ++-- Kernel/Syscalls/anon_create.cpp | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Kernel/FileSystem/AnonymousFile.h b/Kernel/FileSystem/AnonymousFile.h index 470d5cdf4a..021611018b 100644 --- a/Kernel/FileSystem/AnonymousFile.h +++ b/Kernel/FileSystem/AnonymousFile.h @@ -12,9 +12,9 @@ namespace Kernel { class AnonymousFile final : public File { public: - static NonnullRefPtr create(NonnullRefPtr vmobject) + static RefPtr create(NonnullRefPtr vmobject) { - return adopt_ref(*new AnonymousFile(move(vmobject))); + return adopt_ref_if_nonnull(new AnonymousFile(move(vmobject))); } virtual ~AnonymousFile() override; diff --git a/Kernel/Syscalls/anon_create.cpp b/Kernel/Syscalls/anon_create.cpp index 28e5b5d0b7..cb30655806 100644 --- a/Kernel/Syscalls/anon_create.cpp +++ b/Kernel/Syscalls/anon_create.cpp @@ -30,6 +30,8 @@ KResultOr Process::sys$anon_create(size_t size, int options) return ENOMEM; auto anon_file = AnonymousFile::create(vmobject.release_nonnull()); + if (!anon_file) + return ENOMEM; auto description_or_error = FileDescription::create(*anon_file); if (description_or_error.is_error()) return description_or_error.error();