Преглед на файлове

Kernel: Make PTYMultiplexer::open API OOM safe

Brian Gianforcaro преди 4 години
родител
ревизия
77868abe6a
променени са 1 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 4 2
      Kernel/TTY/PTYMultiplexer.cpp

+ 4 - 2
Kernel/TTY/PTYMultiplexer.cpp

@@ -40,9 +40,11 @@ KResultOr<NonnullRefPtr<FileDescription>> PTYMultiplexer::open(int options)
     if (m_freelist.is_empty())
     if (m_freelist.is_empty())
         return EBUSY;
         return EBUSY;
     auto master_index = m_freelist.take_last();
     auto master_index = m_freelist.take_last();
-    auto master = adopt_ref(*new MasterPTY(master_index));
+    auto master = adopt_ref_if_nonnull(new MasterPTY(master_index));
+    if (!master)
+        return ENOMEM;
     dbgln_if(PTMX_DEBUG, "PTYMultiplexer::open: Vending master {}", master->index());
     dbgln_if(PTMX_DEBUG, "PTYMultiplexer::open: Vending master {}", master->index());
-    auto description = FileDescription::create(move(master));
+    auto description = FileDescription::create(*master);
     if (!description.is_error()) {
     if (!description.is_error()) {
         description.value()->set_rw_mode(options);
         description.value()->set_rw_mode(options);
         description.value()->set_file_flags(options);
         description.value()->set_file_flags(options);