If there is no session or terminal group ID, pass the plugin a value of 0.
This behavior already matches what is documented in the sudo_plugin manual for "sid" but the "tcpgid" entry needed to be updated.
This commit is contained in:
25
src/sudo.c
25
src/sudo.c
@@ -521,13 +521,14 @@ get_user_info(struct user_details *ud)
|
||||
ud->pid = getpid();
|
||||
ud->ppid = getppid();
|
||||
ud->pgid = getpgid(0);
|
||||
ud->tcpgid = -1;
|
||||
fd = open(_PATH_TTY, O_RDWR);
|
||||
if (fd != -1) {
|
||||
ud->tcpgid = tcgetpgrp(fd);
|
||||
if ((ud->tcpgid = tcgetpgrp(fd)) == -1)
|
||||
ud->tcpgid = 0;
|
||||
close(fd);
|
||||
}
|
||||
ud->sid = getsid(0);
|
||||
if ((ud->sid = getsid(0)) == -1)
|
||||
ud->sid = 0;
|
||||
|
||||
ud->uid = getuid();
|
||||
ud->euid = geteuid();
|
||||
@@ -560,18 +561,12 @@ get_user_info(struct user_details *ud)
|
||||
goto oom;
|
||||
if (asprintf(&user_info[++i], "ppid=%d", (int)ud->ppid) == -1)
|
||||
goto oom;
|
||||
if (ud->pgid != -1) {
|
||||
if (asprintf(&user_info[++i], "pgid=%d", (int)ud->pgid) == -1)
|
||||
goto oom;
|
||||
}
|
||||
if (ud->tcpgid != -1) {
|
||||
if (asprintf(&user_info[++i], "tcpgid=%d", (int)ud->tcpgid) == -1)
|
||||
goto oom;
|
||||
}
|
||||
if (ud->sid != -1) {
|
||||
if (asprintf(&user_info[++i], "sid=%d", (int)ud->sid) == -1)
|
||||
goto oom;
|
||||
}
|
||||
if (asprintf(&user_info[++i], "pgid=%d", (int)ud->pgid) == -1)
|
||||
goto oom;
|
||||
if (asprintf(&user_info[++i], "tcpgid=%d", (int)ud->tcpgid) == -1)
|
||||
goto oom;
|
||||
if (asprintf(&user_info[++i], "sid=%d", (int)ud->sid) == -1)
|
||||
goto oom;
|
||||
if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->uid) == -1)
|
||||
goto oom;
|
||||
if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->euid) == -1)
|
||||
|
Reference in New Issue
Block a user