فهرست منبع

Kernel: Make AnonymousFile::create API OOM safe

Brian Gianforcaro 4 سال پیش
والد
کامیت
d2d6ab40f9
2فایلهای تغییر یافته به همراه4 افزوده شده و 2 حذف شده
  1. 2 2
      Kernel/FileSystem/AnonymousFile.h
  2. 2 0
      Kernel/Syscalls/anon_create.cpp

+ 2 - 2
Kernel/FileSystem/AnonymousFile.h

@@ -12,9 +12,9 @@ namespace Kernel {
 
 class AnonymousFile final : public File {
 public:
-    static NonnullRefPtr<AnonymousFile> create(NonnullRefPtr<AnonymousVMObject> vmobject)
+    static RefPtr<AnonymousFile> create(NonnullRefPtr<AnonymousVMObject> vmobject)
     {
-        return adopt_ref(*new AnonymousFile(move(vmobject)));
+        return adopt_ref_if_nonnull(new AnonymousFile(move(vmobject)));
     }
 
     virtual ~AnonymousFile() override;

+ 2 - 0
Kernel/Syscalls/anon_create.cpp

@@ -30,6 +30,8 @@ KResultOr<int> 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();