Blame SOURCES/sudo-1.8.23-who-am-i.patch

e7179e
commit b2f7983c84fd01e0b29895d7df776b4b162fd8a5
e7179e
Author: Todd C. Miller <Todd.Miller@sudo.ws>
e7179e
Date:   Wed Jan 2 07:39:33 2019 -0700
e7179e
e7179e
    Fix setting of utmp entry when running command in a pty.
e7179e
    Regression introduced in sudo 1.8.22.
e7179e
e7179e
diff --git a/src/exec_pty.c b/src/exec_pty.c
e7179e
index cbcccca3..68312a98 100644
e7179e
--- a/src/exec_pty.c
e7179e
+++ b/src/exec_pty.c
e7179e
@@ -140,7 +140,7 @@ pty_cleanup(void)
e7179e
  * and slavename globals.
e7179e
  */
e7179e
 static bool
e7179e
-pty_setup(uid_t uid, const char *tty)
e7179e
+pty_setup(struct command_details *details, const char *tty)
e7179e
 {
e7179e
     debug_decl(pty_setup, SUDO_DEBUG_EXEC);
e7179e
 
e7179e
@@ -152,12 +152,15 @@ pty_setup(uid_t uid, const char *tty)
e7179e
     }
e7179e
 
e7179e
     if (!get_pty(&io_fds[SFD_MASTER], &io_fds[SFD_SLAVE],
e7179e
-	slavename, sizeof(slavename), uid))
e7179e
+	slavename, sizeof(slavename), details->euid))
e7179e
 	sudo_fatal(U_("unable to allocate pty"));
e7179e
 
e7179e
     /* Add entry to utmp/utmpx? */
e7179e
-    if (utmp_user != NULL)
e7179e
+    if (ISSET(details->flags, CD_SET_UTMP)) {
e7179e
+	utmp_user =
e7179e
+	    details->utmp_user ? details->utmp_user : user_details.username;
e7179e
 	utmp_login(tty, slavename, io_fds[SFD_SLAVE], utmp_user);
e7179e
+    }
e7179e
 
e7179e
     sudo_debug_printf(SUDO_DEBUG_INFO,
e7179e
 	"%s: %s fd %d, pty master fd %d, pty slave fd %d",
e7179e
@@ -1302,12 +1305,11 @@ exec_pty(struct command_details *details, struct command_status *cstat)
e7179e
     /*
e7179e
      * Allocate a pty.
e7179e
      */
e7179e
-    if (pty_setup(details->euid, user_details.tty)) {
e7179e
-	if (ISSET(details->flags, CD_SET_UTMP))
e7179e
-	    utmp_user = details->utmp_user ? details->utmp_user : user_details.username;
e7179e
-    } else if (TAILQ_EMPTY(&io_plugins)) {
e7179e
-	/* Not logging I/O and didn't allocate a pty. */
e7179e
-	debug_return_bool(false);
e7179e
+    if (!pty_setup(details, user_details.tty)) {
e7179e
+	if (TAILQ_EMPTY(&io_plugins)) {
e7179e
+	    /* Not logging I/O and didn't allocate a pty. */
e7179e
+	    debug_return_bool(false);
e7179e
+	}
e7179e
     }
e7179e
 
e7179e
     /*