aboutsummaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-07-21 15:53:59 -0600
committerJosh Rahm <rahm@google.com>2022-07-21 15:53:59 -0600
commitb11548e3db4361cd8312ffbd27472823bdab4d62 (patch)
treea84b5cf79fb41bb60b6495c1a346bb360b224604 /proc.c
parent88ebf5544e995d85b2f1416a216ac7f44f719eed (diff)
parentab1d18d00febe161080b8e81331861481110809f (diff)
downloadrtmux-b11548e3db4361cd8312ffbd27472823bdab4d62.tar.gz
rtmux-b11548e3db4361cd8312ffbd27472823bdab4d62.tar.bz2
rtmux-b11548e3db4361cd8312ffbd27472823bdab4d62.zip
Merge remote-tracking branch 'origin/master' into rahm
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/proc.c b/proc.c
index 958a9483..67ec214a 100644
--- a/proc.c
+++ b/proc.c
@@ -56,6 +56,7 @@ struct tmuxpeer {
struct imsgbuf ibuf;
struct event event;
+ uid_t uid;
int flags;
#define PEER_BAD 0x1
@@ -201,7 +202,7 @@ proc_start(const char *name)
#endif
, event_get_version(), event_get_method()
#ifdef HAVE_UTF8PROC
- , utf8proc_version ()
+ , utf8proc_version()
#endif
);
@@ -308,6 +309,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;
@@ -318,6 +320,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);
@@ -345,6 +350,12 @@ proc_kill_peer(struct tmuxpeer *peer)
}
void
+proc_flush_peer(struct tmuxpeer *peer)
+{
+ imsg_flush(&peer->ibuf);
+}
+
+void
proc_toggle_log(struct tmuxproc *tp)
{
log_toggle(tp->name);
@@ -373,3 +384,9 @@ proc_fork_and_daemon(int *fd)
return (pid);
}
}
+
+uid_t
+proc_get_peer_uid(struct tmuxpeer *peer)
+{
+ return (peer->uid);
+}