Hello,
David Bidner, le mar. 15 sept. 2026 14:47:28 +0200, a ecrit:
> The accepted server-side socket is created with sock_clone(), which gives
> it pflocal's own uid/gid (normally root), so fstat() on the accepted
> AF_LOCAL socket reports root rather than the connecting user. Copy the
> connecting socket's uid/gid onto the clone, so the accepting side can
> learn the peer's credentials with fstat().
This seems odd, Linux does not behave like that.
Samuel
> * pflocal/socket.c (S_socket_connect): Copy sock->uid/gid to the server
> clone.
> ---
> pflocal/socket.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/pflocal/socket.c b/pflocal/socket.c
> index d60bece..cad2a0c 100644
> --- a/pflocal/socket.c
> +++ b/pflocal/socket.c
> @@ -136,6 +136,8 @@ S_socket_connect (struct sock_user *user, struct addr
> *addr)
> err = sock_clone (peer, &server);
> if (!err)
> {
> + server->uid = sock->uid;
> + server->gid = sock->gid;
> err = sock_connect (sock, server);
> if (!err)
> {
> --
> 2.47.3