Pass pid, ppid, sid, pgid and tcpgid to plugin in user_info list.
This commit is contained in:
19
src/sudo.c
19
src/sudo.c
@@ -427,12 +427,23 @@ get_user_info(struct user_details *ud)
|
||||
{
|
||||
char *cp, **user_info, cwd[PATH_MAX], host[MAXHOSTNAMELEN];
|
||||
struct passwd *pw;
|
||||
int i = 0;
|
||||
int fd, i = 0;
|
||||
debug_decl(get_user_info, SUDO_DEBUG_UTIL)
|
||||
|
||||
/* XXX - bound check number of entries */
|
||||
user_info = emalloc2(32, sizeof(char *));
|
||||
|
||||
ud->pid = getpid();
|
||||
ud->ppid = getppid();
|
||||
ud->pgid = getpgid(0);
|
||||
ud->tcpgid = (pid_t)-1;
|
||||
fd = open(_PATH_TTY, O_RDWR|O_NOCTTY|O_NONBLOCK, 0);
|
||||
if (fd != -1) {
|
||||
ud->tcpgid = tcgetpgrp(fd);
|
||||
close(fd);
|
||||
}
|
||||
ud->sid = getsid(0);
|
||||
|
||||
ud->uid = getuid();
|
||||
ud->euid = geteuid();
|
||||
ud->gid = getgid();
|
||||
@@ -453,6 +464,12 @@ get_user_info(struct user_details *ud)
|
||||
}
|
||||
ud->shell = estrdup(ud->shell);
|
||||
|
||||
easprintf(&user_info[++i], "pid=%d", (int)ud->pid);
|
||||
easprintf(&user_info[++i], "ppid=%d", (int)ud->ppid);
|
||||
easprintf(&user_info[++i], "pgid=%d", (int)ud->pgid);
|
||||
easprintf(&user_info[++i], "tcpgid=%d", (int)ud->tcpgid);
|
||||
easprintf(&user_info[++i], "sid=%d", (int)ud->sid);
|
||||
|
||||
easprintf(&user_info[++i], "uid=%u", (unsigned int)ud->uid);
|
||||
easprintf(&user_info[++i], "euid=%u", (unsigned int)ud->euid);
|
||||
easprintf(&user_info[++i], "gid=%u", (unsigned int)ud->gid);
|
||||
|
Reference in New Issue
Block a user