Skip to content

Commit 1352b6b

Browse files
committed
Separate bind_socket_callback
1 parent bde45d1 commit 1352b6b

2 files changed

Lines changed: 4 additions & 1 deletion

File tree

lib/tinykvm/linux/fds.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace tinykvm
2929
using open_readable_t = std::function<bool(std::string&)>;
3030
using open_writable_t = std::function<bool(std::string&)>;
3131
using connect_socket_t = std::function<bool(int, struct sockaddr_storage&)>;
32+
using bind_socket_t = std::function<bool(int, struct sockaddr_storage&)>;
3233
using listening_socket_t = std::function<bool(int, int)>;
3334
using accept_socket_t = std::function<int(int, int, int, struct sockaddr_storage&, socklen_t&)>;
3435
using resolve_symlink_t = std::function<bool(std::string&)>;
@@ -321,6 +322,7 @@ namespace tinykvm
321322

322323
public:
323324
connect_socket_t connect_socket_callback;
325+
bind_socket_t bind_socket_callback;
324326
accept_socket_t accept_socket_callback;
325327
listening_socket_t listening_socket_callback;
326328
epoll_wait_t epoll_wait_callback;

lib/tinykvm/linux/system_calls.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,8 @@ void Machine::setup_linux_system_calls(bool unsafe_syscalls)
11111111
{
11121112
cpu.machine().copy_from_guest(&addr, g_addr, addrlen);
11131113
// Validate the address
1114-
if (UNLIKELY(!cpu.machine().fds().validate_socket_address(fd, addr)))
1114+
if (auto& callback = cpu.machine().fds().bind_socket_callback;
1115+
UNLIKELY(callback == nullptr || !callback(fd, addr)))
11151116
{
11161117
regs.rax = -EPERM;
11171118
} else {

0 commit comments

Comments
 (0)