mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
LibWeb: Stop leaking socket fds when sending them over IPC
The implicit constructor for IPC::File does not take ownership of the file, which is surprising.
This commit is contained in:
@@ -80,12 +80,12 @@ WebIDL::ExceptionOr<void> MessagePort::transfer_steps(HTML::TransferDataHolder&
|
||||
// 2. Set dataHolder.[[RemotePort]] to remotePort.
|
||||
auto fd = MUST(m_socket->release_fd());
|
||||
m_socket = nullptr;
|
||||
data_holder.fds.append(fd);
|
||||
data_holder.fds.append(IPC::File(fd, IPC::File::CloseAfterSending));
|
||||
data_holder.data.append(IPC_FILE_TAG);
|
||||
|
||||
auto fd_passing_socket = MUST(m_fd_passing_socket->release_fd());
|
||||
m_fd_passing_socket = nullptr;
|
||||
data_holder.fds.append(fd_passing_socket);
|
||||
data_holder.fds.append(IPC::File(fd_passing_socket, IPC::File::CloseAfterSending));
|
||||
data_holder.data.append(IPC_FILE_TAG);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,8 @@ WebWorkerClient::WebWorkerClient(NonnullOwnPtr<Core::LocalSocket> socket)
|
||||
WebView::SocketPair WebWorkerClient::dup_sockets()
|
||||
{
|
||||
WebView::SocketPair pair;
|
||||
pair.socket = MUST(Core::System::dup(socket().fd().value()));
|
||||
pair.fd_passing_socket = MUST(Core::System::dup(fd_passing_socket().fd().value()));
|
||||
pair.socket = IPC::File(MUST(Core::System::dup(socket().fd().value())), IPC::File::CloseAfterSending);
|
||||
pair.fd_passing_socket = IPC::File(MUST(Core::System::dup(fd_passing_socket().fd().value())), IPC::File::CloseAfterSending);
|
||||
return pair;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user