=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/proc.c,v retrieving revision 1.20 retrieving revision 1.21 diff -c -r1.20 -r1.21 *** src/usr.bin/tmux/proc.c 2021/02/11 09:39:29 1.20 --- src/usr.bin/tmux/proc.c 2022/03/08 11:28:40 1.21 *************** *** 1,4 **** ! /* $OpenBSD: proc.c,v 1.20 2021/02/11 09:39:29 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: proc.c,v 1.21 2022/03/08 11:28:40 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott *************** *** 55,60 **** --- 55,61 ---- struct imsgbuf ibuf; struct event event; + uid_t uid; int flags; #define PEER_BAD 0x1 *************** *** 296,301 **** --- 297,303 ---- void (*dispatchcb)(struct imsg *, void *), void *arg) { struct tmuxpeer *peer; + gid_t gid; peer = xcalloc(1, sizeof *peer); peer->parent = tp; *************** *** 306,311 **** --- 308,316 ---- 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); *************** *** 360,363 **** --- 365,374 ---- *fd = pair[0]; return (pid); } + } + + uid_t + proc_get_peer_uid(struct tmuxpeer *peer) + { + return (peer->uid); }