|
Vishal Mishra |
7bfe72 |
Index: openssh-9.9p1/sshd.c
|
|
Vishal Mishra |
7bfe72 |
===================================================================
|
|
Vishal Mishra |
7bfe72 |
--- openssh-9.9p1.orig/sshd.c
|
|
Vishal Mishra |
7bfe72 |
+++ openssh-9.9p1/sshd.c
|
|
Vishal Mishra |
7bfe72 |
@@ -1768,6 +1768,9 @@ main(int ac, char **av)
|
|
Vishal Mishra |
7bfe72 |
/* Accept a connection and return in a forked child */
|
|
Vishal Mishra |
7bfe72 |
server_accept_loop(&sock_in, &sock_out,
|
|
Vishal Mishra |
7bfe72 |
&newsock, config_s, log_stderr);
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+ set_log_session_id(); // Set log session ID for this session
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
}
|
|
Vishal Mishra |
7bfe72 |
|
|
Vishal Mishra |
7bfe72 |
/* This is the child processing a new connection. */
|
|
Vishal Mishra |
7bfe72 |
@@ -1818,3 +1821,4 @@ cleanup_exit(int i)
|
|
Vishal Mishra |
7bfe72 |
{
|
|
Vishal Mishra |
7bfe72 |
_exit(i);
|
|
Vishal Mishra |
7bfe72 |
}
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
Index: openssh-9.9p1/log.c
|
|
Vishal Mishra |
7bfe72 |
===================================================================
|
|
Vishal Mishra |
7bfe72 |
--- openssh-9.9p1.orig/log.c
|
|
Vishal Mishra |
7bfe72 |
+++ openssh-9.9p1/log.c
|
|
Vishal Mishra |
7bfe72 |
@@ -414,25 +414,52 @@ do_log(LogLevel level, int force, const
|
|
Vishal Mishra |
7bfe72 |
tmp_handler(level, force, fmtbuf, log_handler_ctx);
|
|
Vishal Mishra |
7bfe72 |
log_handler = tmp_handler;
|
|
Vishal Mishra |
7bfe72 |
} else if (log_on_stderr) {
|
|
Vishal Mishra |
7bfe72 |
- snprintf(msgbuf, sizeof msgbuf, "%s%s%.*s\r\n",
|
|
Vishal Mishra |
7bfe72 |
+ snprintf(msgbuf, sizeof msgbuf, "%s%s%.*s session=%s\r\n",
|
|
Vishal Mishra |
7bfe72 |
(log_on_stderr > 1) ? progname : "",
|
|
Vishal Mishra |
7bfe72 |
(log_on_stderr > 1) ? ": " : "",
|
|
Vishal Mishra |
7bfe72 |
- (int)sizeof msgbuf - 3, fmtbuf);
|
|
Vishal Mishra |
7bfe72 |
+ (int)sizeof msgbuf - 3, fmtbuf, get_log_session_id());
|
|
Vishal Mishra |
7bfe72 |
(void)write(log_stderr_fd, msgbuf, strlen(msgbuf));
|
|
Vishal Mishra |
7bfe72 |
} else {
|
|
Vishal Mishra |
7bfe72 |
#if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT)
|
|
Vishal Mishra |
7bfe72 |
openlog_r(progname, LOG_PID, log_facility, &sdata);
|
|
Vishal Mishra |
7bfe72 |
- syslog_r(pri, &sdata, "%.500s", fmtbuf);
|
|
Vishal Mishra |
7bfe72 |
+ syslog_r(pri, &sdata, "%.500s session=%s", fmtbuf, get_log_session_id());
|
|
Vishal Mishra |
7bfe72 |
closelog_r(&sdata);
|
|
Vishal Mishra |
7bfe72 |
#else
|
|
Vishal Mishra |
7bfe72 |
openlog(progname, LOG_PID, log_facility);
|
|
Vishal Mishra |
7bfe72 |
- syslog(pri, "%.500s", fmtbuf);
|
|
Vishal Mishra |
7bfe72 |
+ syslog(pri, "%.500s session=%s", fmtbuf, get_log_session_id());
|
|
Vishal Mishra |
7bfe72 |
closelog();
|
|
Vishal Mishra |
7bfe72 |
#endif
|
|
Vishal Mishra |
7bfe72 |
}
|
|
Vishal Mishra |
7bfe72 |
errno = saved_errno;
|
|
Vishal Mishra |
7bfe72 |
}
|
|
Vishal Mishra |
7bfe72 |
|
|
Vishal Mishra |
7bfe72 |
+void
|
|
Vishal Mishra |
7bfe72 |
+set_log_session_id()
|
|
Vishal Mishra |
7bfe72 |
+{
|
|
Vishal Mishra |
7bfe72 |
+ struct timeval tv;
|
|
Vishal Mishra |
7bfe72 |
+ char hostname[HOST_NAME_MAX + 1];
|
|
Vishal Mishra |
7bfe72 |
+ char session_id[HOST_NAME_MAX + 20];
|
|
Vishal Mishra |
7bfe72 |
+ char *s;
|
|
Vishal Mishra |
7bfe72 |
+ if (gethostname(hostname, sizeof(hostname)) != 0) {
|
|
Vishal Mishra |
7bfe72 |
+ *hostname = '\0';
|
|
Vishal Mishra |
7bfe72 |
+ }
|
|
Vishal Mishra |
7bfe72 |
+ gettimeofday(&tv, NULL);
|
|
Vishal Mishra |
7bfe72 |
+ snprintf(session_id, sizeof(session_id), "%s:%x.%x",
|
|
Vishal Mishra |
7bfe72 |
+ hostname, tv.tv_sec, tv.tv_usec);
|
|
Vishal Mishra |
7bfe72 |
+ setenv("LOG_SESSION_ID", session_id, 1);
|
|
Vishal Mishra |
7bfe72 |
+}
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+const char *
|
|
Vishal Mishra |
7bfe72 |
+get_log_session_id()
|
|
Vishal Mishra |
7bfe72 |
+{
|
|
Vishal Mishra |
7bfe72 |
+ const char *id = getenv("LOG_SESSION_ID");
|
|
Vishal Mishra |
7bfe72 |
+ if (!id) {
|
|
Vishal Mishra |
7bfe72 |
+ set_log_session_id();
|
|
Vishal Mishra |
7bfe72 |
+ id = getenv("LOG_SESSION_ID");
|
|
Vishal Mishra |
7bfe72 |
+ }
|
|
Vishal Mishra |
7bfe72 |
+ return id;
|
|
Vishal Mishra |
7bfe72 |
+}
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
void
|
|
Vishal Mishra |
7bfe72 |
sshlog(const char *file, const char *func, int line, int showfunc,
|
|
Vishal Mishra |
7bfe72 |
LogLevel level, const char *suffix, const char *fmt, ...)
|
|
Vishal Mishra |
7bfe72 |
@@ -519,3 +546,4 @@ sshlogdirect(LogLevel level, int forced,
|
|
Vishal Mishra |
7bfe72 |
do_log(level, forced, NULL, fmt, args);
|
|
Vishal Mishra |
7bfe72 |
va_end(args);
|
|
Vishal Mishra |
7bfe72 |
}
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
Index: openssh-9.9p1/regress/session-id.sh
|
|
Vishal Mishra |
7bfe72 |
===================================================================
|
|
Vishal Mishra |
7bfe72 |
--- /dev/null
|
|
Vishal Mishra |
7bfe72 |
+++ openssh-9.9p1/regress/session-id.sh
|
|
Vishal Mishra |
7bfe72 |
@@ -0,0 +1,23 @@
|
|
Vishal Mishra |
7bfe72 |
+tid="session id"
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+start_sshd
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+${SSH} -F $OBJ/ssh_config somehost true
|
|
Vishal Mishra |
7bfe72 |
+if [ $? -ne 0 ]; then
|
|
Vishal Mishra |
7bfe72 |
+ fail "ssh connect with failed"
|
|
Vishal Mishra |
7bfe72 |
+fi
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+expected="session=$(hostname)"
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+# grab the first session ID which will be stable across session
|
|
Vishal Mishra |
7bfe72 |
+sessionid=$(grep -m1 $expected $TEST_SSHD_LOGFILE | sed -E 's/.*(session=.*)/\1/')
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+line_count=$(grep -c $expected $TEST_SSHD_LOGFILE)
|
|
Vishal Mishra |
7bfe72 |
+if [ $line_count == "0" ]; then
|
|
Vishal Mishra |
7bfe72 |
+ fail "No session ID lines found"
|
|
Vishal Mishra |
7bfe72 |
+fi
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
+stable_id_count=$(grep -c $sessionid $TEST_SSHD_LOGFILE)
|
|
Vishal Mishra |
7bfe72 |
+if [ $line_count != $stable_id_count ]; then
|
|
Vishal Mishra |
7bfe72 |
+ fail 'Mismatching session ids found'
|
|
Vishal Mishra |
7bfe72 |
+fi
|
|
Vishal Mishra |
7bfe72 |
Index: openssh-9.9p1/log.h
|
|
Vishal Mishra |
7bfe72 |
===================================================================
|
|
Vishal Mishra |
7bfe72 |
--- openssh-9.9p1.orig/log.h
|
|
Vishal Mishra |
7bfe72 |
+++ openssh-9.9p1/log.h
|
|
Vishal Mishra |
7bfe72 |
@@ -68,6 +68,9 @@ const char * log_level_name(LogLevel);
|
|
Vishal Mishra |
7bfe72 |
void set_log_handler(log_handler_fn *, void *);
|
|
Vishal Mishra |
7bfe72 |
void cleanup_exit(int) __attribute__((noreturn));
|
|
Vishal Mishra |
7bfe72 |
|
|
Vishal Mishra |
7bfe72 |
+void set_log_session_id();
|
|
Vishal Mishra |
7bfe72 |
+const char * get_log_session_id();
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
void sshlog(const char *, const char *, int, int,
|
|
Vishal Mishra |
7bfe72 |
LogLevel, const char *, const char *, ...)
|
|
Vishal Mishra |
7bfe72 |
__attribute__((format(printf, 7, 8)));
|
|
Vishal Mishra |
7bfe72 |
Index: openssh-9.9p1/session.c
|
|
Vishal Mishra |
7bfe72 |
===================================================================
|
|
Vishal Mishra |
7bfe72 |
--- openssh-9.9p1.orig/session.c
|
|
Vishal Mishra |
7bfe72 |
+++ openssh-9.9p1/session.c
|
|
Vishal Mishra |
7bfe72 |
@@ -1242,6 +1242,10 @@ do_setup_env(struct ssh *ssh, Session *s
|
|
Vishal Mishra |
7bfe72 |
child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND",
|
|
Vishal Mishra |
7bfe72 |
original_command);
|
|
Vishal Mishra |
7bfe72 |
|
|
Vishal Mishra |
7bfe72 |
+ /* set LOG_SESSION_ID for child */
|
|
Vishal Mishra |
7bfe72 |
+ child_set_env(&env, &envsize, "LOG_SESSION_ID", get_log_session_id());
|
|
Vishal Mishra |
7bfe72 |
+ debug("set LOG_SESION_ID to: %s", get_log_session_id());
|
|
Vishal Mishra |
7bfe72 |
+
|
|
Vishal Mishra |
7bfe72 |
if (debug_flag) {
|
|
Vishal Mishra |
7bfe72 |
/* dump the environment */
|
|
Vishal Mishra |
7bfe72 |
fprintf(stderr, "Environment:\n");
|