From f8e6af9f326c5c0c37f2daf351fe3a34a65db7c6 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Tue, 9 May 2023 00:31:24 +0300 Subject: pflocal: Port to x86_64 Message-Id: <20230508213136.608575-30-bugaevc@gmail.com> --- pflocal/socket.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'pflocal/socket.c') diff --git a/pflocal/socket.c b/pflocal/socket.c index 8c240e09..625980b9 100644 --- a/pflocal/socket.c +++ b/pflocal/socket.c @@ -380,7 +380,7 @@ S_socket_recv (struct sock_user *user, int in_flags, data_t *data, mach_msg_type_name_t *data_len, mach_port_t **ports, mach_msg_type_name_t *ports_type, - size_t *num_ports, + mach_msg_type_name_t *num_ports, data_t *control, mach_msg_type_name_t *control_len, int *out_flags, vm_size_t amount) { @@ -412,12 +412,21 @@ S_socket_recv (struct sock_user *user, } else if (!err) { + size_t data_size = *data_len; + size_t control_size = *control_len; + size_t ports_size = *num_ports; noblock = (user->sock->flags & PFLOCAL_SOCK_NONBLOCK) || (in_flags & MSG_DONTWAIT); err = - pipe_recv (pipe, noblock, &flags, &source_addr, data, data_len, - amount, control, control_len, ports, num_ports); + pipe_recv (pipe, noblock, &flags, &source_addr, data, &data_size, + amount, control, &control_size, ports, &ports_size); pipe_release_reader (pipe); + if (!err) + { + *data_len = data_size; + *control_len = control_size; + *num_ports = ports_size; + } } if (!err) @@ -442,7 +451,8 @@ S_socket_recv (struct sock_user *user, error_t S_socket_getopt (struct sock_user *user, int level, int opt, - data_t *value, size_t *value_len) + data_t *value, + mach_msg_type_name_t *value_len) { int ret = 0; struct pipe *pipe; @@ -531,7 +541,8 @@ S_socket_getopt (struct sock_user *user, error_t S_socket_setopt (struct sock_user *user, - int level, int opt, const_data_t value, size_t value_len) + int level, int opt, const_data_t value, + mach_msg_type_name_t value_len) { int ret = 0; struct pipe *pipe; -- cgit v1.2.3