浏览代码

Kernel: Make LocalSocket factory APIs OOM safe

Brian Gianforcaro 4 年之前
父节点
当前提交
9375f3dc09
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      Kernel/Net/LocalSocket.cpp

+ 7 - 2
Kernel/Net/LocalSocket.cpp

@@ -33,12 +33,17 @@ void LocalSocket::for_each(Function<void(const LocalSocket&)> callback)
 
 
 KResultOr<NonnullRefPtr<Socket>> LocalSocket::create(int type)
 KResultOr<NonnullRefPtr<Socket>> LocalSocket::create(int type)
 {
 {
-    return adopt_ref(*new LocalSocket(type));
+    auto socket = adopt_ref_if_nonnull(new LocalSocket(type));
+    if (socket)
+        return socket.release_nonnull();
+    return ENOMEM;
 }
 }
 
 
 KResultOr<SocketPair> LocalSocket::create_connected_pair(int type)
 KResultOr<SocketPair> LocalSocket::create_connected_pair(int type)
 {
 {
-    auto socket = adopt_ref(*new LocalSocket(type));
+    auto socket = adopt_ref_if_nonnull(new LocalSocket(type));
+    if (!socket)
+        return ENOMEM;
 
 
     auto description1_result = FileDescription::create(*socket);
     auto description1_result = FileDescription::create(*socket);
     if (description1_result.is_error())
     if (description1_result.is_error())