From 594cfb7586089dfefab60574495baf6ed4048c1d Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 11 Nov 2020 10:04:27 +0100 Subject: pflocal: Record socket creator so io_stat can return it * pflocal/sock.h (struct sock): Add uid and gid fields. * pflocal/sock.c (sock_create): Set uid and gid to 0. * pflocal/mig-mutate.h (SOCKET_IMPORTS): Import ../libtrivfs/mig-decls.h. (PF_INTRAN, PF_INTRAN_PAYLOAD, PF_DESTRUCTOR): New macros. * pflocal/pf.c: Include hurd/trivfs.h. (S_socket_create): Update parameters. Set sock's uid and gid fields according to pf->user. * pflocal/io.c (S_io_stat): Set st_uid and st_gid according to pf. --- pflocal/pf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pflocal/pf.c') diff --git a/pflocal/pf.c b/pflocal/pf.c index 35b3d8c3..c905f3bf 100644 --- a/pflocal/pf.c +++ b/pflocal/pf.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "sock.h" @@ -29,7 +30,7 @@ /* Create a new socket. Sock type is, for example, SOCK_STREAM, SOCK_DGRAM, or some such. */ error_t -S_socket_create (mach_port_t pf, +S_socket_create (trivfs_protid_t pf, int sock_type, int protocol, mach_port_t *port, mach_msg_type_name_t *port_type) { @@ -77,6 +78,11 @@ S_socket_create (mach_port_t pf, else *port_type = MACH_MSG_TYPE_MAKE_SEND; } + + if (pf->user->uids->num > 0) + sock->uid = pf->user->uids->ids[0]; + if (pf->user->gids->num > 0) + sock->gid = pf->user->gids->ids[0]; return err; } -- cgit v1.2.3