]> granicus.if.org Git - sudo/commitdiff
If running a command or sudoedit in transcript mode, call io_nextid()
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 24 May 2010 18:30:54 +0000 (14:30 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 24 May 2010 18:30:54 +0000 (14:30 -0400)
before log_allowed() so the session id is logged.

plugins/sudoers/iolog.c
plugins/sudoers/sudoers.c
plugins/sudoers/sudoers.h

index 00b9205bb0f134357df898a1d3d120fb0a3a0630..ebd24d7e13b92ccf2303b84f52aa1fbf8b4259f7 100644 (file)
@@ -71,7 +71,7 @@ static sigset_t ttyblock;
 static struct timeval last_time;
 static union script_fd io_outfile, io_timfile;
 
-static void
+void
 io_nextid(void)
 {
     struct stat sb;
@@ -197,7 +197,6 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
      * Build a path containing the session id split into two-digit subdirs,
      * so ID 000001 becomes /var/log/sudo-session/00/00/01.
      */
-    io_nextid();
     len = build_idpath(pathbuf, sizeof(pathbuf));
     if (len == -1)
        return -1;
index f9a9bb46637249b3dd57fbb65f417dbc04f3fd53..7902f73bf4a5cfd648f31eba572db16c425d331b 100644 (file)
@@ -497,6 +497,8 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
            validate_env_vars(sudo_user.env_vars);
     }
 
+    if (def_transcript && (sudo_mode & (MODE_RUN | MODE_EDIT)))
+       io_nextid();
     log_allowed(validated);
     if (ISSET(sudo_mode, MODE_CHECK))
        rval = display_cmnd(snl, list_pw ? list_pw : sudo_user.pw);
index 136faf8d4df2b675b17719e039c14211211df260..bf95ac783161b0bb1bc1051a9ebbe51a4e796f01 100644 (file)
@@ -295,6 +295,7 @@ int sudoers_io_open(unsigned int version, sudo_conv_t conversation,
 void sudoers_io_close(int exit_status, int error);
 int sudoers_io_version(int verbose);
 int sudoers_io_log_output(const char *buf, unsigned int len);
+void io_nextid(void);
 
 /* env.c */
 char **env_get(void);