I think the problem is with the pflocal/io.c implementation of S_io_stat. emacsclient is trying to
compare the uid provided by geteuid with the uid in the stat buffer from calling fstat on the
file descriptor of a socket created with cloexec_socket (AF_UNIX, SOCK_STREAM, 0);. But
S_io_stat doesn't set uid.
This seems to be correct I was able to get the check to pass if I hardcode the st->st_uid in
S_io_stat in pflocal.io.c. The problem is that /hurd/pflocal is owned by and in the group root,
so when I call getuid() or geteuid() it returns 0 (the uid for root). I tried setting the SETUID bit
of the file itself with
sudo chmod +s /hurd/local
but this had no impact on either result from what I could see. I'm at an impasse, then, because I
can't find a way to get the uid of the user that actually requested the port to put in st_uid.
Any suggestions?
Andrew