mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:48:11 +00:00
IPv4: More hacking on bringing up TCP support.
This was a bit more complicated than I expected, but it's moving forward.
This commit is contained in:
parent
7aba68d51c
commit
032d9d7065
7 changed files with 193 additions and 33 deletions
|
@ -1073,6 +1073,7 @@ void Process::crash()
|
|||
{
|
||||
ASSERT_INTERRUPTS_DISABLED();
|
||||
ASSERT(state() != Dead);
|
||||
|
||||
m_termination_signal = SIGSEGV;
|
||||
dump_regions();
|
||||
ASSERT(is_ring3());
|
||||
|
@ -2533,7 +2534,7 @@ ssize_t Process::sys$sendto(const Syscall::SC_sendto_params* params)
|
|||
|
||||
if (!validate_read(data, data_length))
|
||||
return -EFAULT;
|
||||
if (!validate_read(addr, addr_length))
|
||||
if (addr && !validate_read(addr, addr_length))
|
||||
return -EFAULT;
|
||||
auto* descriptor = file_descriptor(sockfd);
|
||||
if (!descriptor)
|
||||
|
@ -2559,17 +2560,21 @@ ssize_t Process::sys$recvfrom(const Syscall::SC_recvfrom_params* params)
|
|||
|
||||
if (!validate_write(buffer, buffer_length))
|
||||
return -EFAULT;
|
||||
if (!validate_read_typed(addr_length))
|
||||
return -EFAULT;
|
||||
if (!validate_read(addr, *addr_length))
|
||||
return -EFAULT;
|
||||
if (addr_length) {
|
||||
if (!validate_read_typed(addr_length))
|
||||
return -EFAULT;
|
||||
if (!validate_read(addr, *addr_length))
|
||||
return -EFAULT;
|
||||
} else if (addr) {
|
||||
return -EINVAL;
|
||||
}
|
||||
auto* descriptor = file_descriptor(sockfd);
|
||||
if (!descriptor)
|
||||
return -EBADF;
|
||||
if (!descriptor->is_socket())
|
||||
return -ENOTSOCK;
|
||||
auto& socket = *descriptor->socket();
|
||||
kprintf("recvfrom %p (%u), flags=%u, addr: %p (%u)\n", buffer, buffer_length, flags, addr, *addr_length);
|
||||
kprintf("recvfrom %p (%u), flags=%u, addr: %p (%p)\n", buffer, buffer_length, flags, addr, addr_length);
|
||||
return socket.recvfrom(buffer, buffer_length, flags, addr, addr_length);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue