aboutsummaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authornicm <nicm>2022-03-08 11:28:40 +0000
committernicm <nicm>2022-03-08 11:28:40 +0000
commit98cd8e4cad3afbc542de665e9d025d12b560bc6b (patch)
tree89c183d5ed03debead753b40899dd7f9186e6cea /proc.c
parenta731b1a9162bfa8157c474d411a4d0d6f131439d (diff)
downloadrtmux-98cd8e4cad3afbc542de665e9d025d12b560bc6b.tar.gz
rtmux-98cd8e4cad3afbc542de665e9d025d12b560bc6b.tar.bz2
rtmux-98cd8e4cad3afbc542de665e9d025d12b560bc6b.zip
Add formats for client and server UID and user (for multiuser setups).
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index 9412cec0..9dcb042e 100644
--- a/proc.c
+++ b/proc.c
@@ -55,6 +55,7 @@ struct tmuxpeer {
struct imsgbuf ibuf;
struct event event;
+ uid_t uid;
int flags;
#define PEER_BAD 0x1
@@ -296,6 +297,7 @@ proc_add_peer(struct tmuxproc *tp, int fd,
void (*dispatchcb)(struct imsg *, void *), void *arg)
{
struct tmuxpeer *peer;
+ gid_t gid;
peer = xcalloc(1, sizeof *peer);
peer->parent = tp;
@@ -306,6 +308,9 @@ proc_add_peer(struct tmuxproc *tp, int fd,
imsg_init(&peer->ibuf, fd);
event_set(&peer->event, fd, EV_READ, proc_event_cb, peer);
+ if (getpeereid(fd, &peer->uid, &gid) != 0)
+ peer->uid = (uid_t)-1;
+
log_debug("add peer %p: %d (%p)", peer, fd, arg);
TAILQ_INSERT_TAIL(&tp->peers, peer, entry);
@@ -361,3 +366,9 @@ proc_fork_and_daemon(int *fd)
return (pid);
}
}
+
+uid_t
+proc_get_peer_uid(struct tmuxpeer *peer)
+{
+ return (peer->uid);
+}