vishalmishra434 / rpms / openssh

Forked from rpms/openssh 3 months ago
Clone
Tomáš Mráz c9833c
diff -up openssh-4.7p1/sshd.c.log-chroot openssh-4.7p1/sshd.c
Tomáš Mráz c9833c
--- openssh-4.7p1/sshd.c.log-chroot	2007-09-06 17:24:13.000000000 +0200
Tomáš Mráz c9833c
+++ openssh-4.7p1/sshd.c	2007-09-06 17:24:13.000000000 +0200
Tomáš Mráz c9833c
@@ -596,6 +596,10 @@ privsep_preauth_child(void)
Tomáš Mráz c9833c
 	/* Demote the private keys to public keys. */
Tomáš Mráz c9833c
 	demote_sensitive_data();
Tomáš Mráz e01ed6
 
Tomáš Mráz c9833c
+	/* Open the syslog permanently so the chrooted process still
Tomáš Mráz c9833c
+	   can write to syslog. */
Tomáš Mráz c9833c
+	open_log();
Tomáš Mráz c9833c
+	
Tomáš Mráz c9833c
 	/* Change our root directory */
Tomáš Mráz c9833c
 	if (chroot(_PATH_PRIVSEP_CHROOT_DIR) == -1)
Tomáš Mráz c9833c
 		fatal("chroot(\"%s\"): %s", _PATH_PRIVSEP_CHROOT_DIR,
Tomáš Mráz c9833c
diff -up openssh-4.7p1/log.c.log-chroot openssh-4.7p1/log.c
Tomáš Mráz c9833c
--- openssh-4.7p1/log.c.log-chroot	2007-05-20 07:08:16.000000000 +0200
Tomáš Mráz c9833c
+++ openssh-4.7p1/log.c	2007-09-06 17:29:34.000000000 +0200
Tomáš Mráz c9833c
@@ -56,6 +56,7 @@ static LogLevel log_level = SYSLOG_LEVEL
Tomáš Mráz e01ed6
 static int log_on_stderr = 1;
Tomáš Mráz e01ed6
 static int log_facility = LOG_AUTH;
Tomáš Mráz e01ed6
 static char *argv0;
Tomáš Mráz e01ed6
+static int log_fd_keep;
Tomáš Mráz e01ed6
 
Tomáš Mráz e01ed6
 extern char *__progname;
Tomáš Mráz e01ed6
 
Tomáš Mráz c9833c
@@ -370,10 +371,21 @@ do_log(LogLevel level, const char *fmt, 
Tomáš Mráz e01ed6
 		syslog_r(pri, &sdata, "%.500s", fmtbuf);
Tomáš Mráz e01ed6
 		closelog_r(&sdata);
Tomáš Mráz e01ed6
 #else
Tomáš Mráz e01ed6
+	    if (!log_fd_keep) {
Tomáš Mráz e01ed6
 		openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility);
Tomáš Mráz e01ed6
+	    }
Tomáš Mráz e01ed6
 		syslog(pri, "%.500s", fmtbuf);
Tomáš Mráz e01ed6
+	    if (!log_fd_keep) {
Tomáš Mráz e01ed6
 		closelog();
Tomáš Mráz e01ed6
+	    }
Tomáš Mráz e01ed6
 #endif
Tomáš Mráz e01ed6
 	}
Tomáš Mráz c9833c
 	errno = saved_errno;
Tomáš Mráz e01ed6
 }
Tomáš Mráz e01ed6
+
Tomáš Mráz e01ed6
+void
Tomáš Mráz e01ed6
+open_log(void)
Tomáš Mráz e01ed6
+{
Tomáš Mráz e01ed6
+	openlog(argv0 ? argv0 : __progname, LOG_PID|LOG_NDELAY, log_facility);
Tomáš Mráz e01ed6
+	log_fd_keep = 1;
Tomáš Mráz e01ed6
+}
Tomáš Mráz c9833c
diff -up openssh-4.7p1/log.h.log-chroot openssh-4.7p1/log.h
Tomáš Mráz c9833c
--- openssh-4.7p1/log.h.log-chroot	2006-08-18 16:32:21.000000000 +0200
Tomáš Mráz c9833c
+++ openssh-4.7p1/log.h	2007-09-06 17:24:13.000000000 +0200
Tomáš Mráz c9833c
@@ -62,4 +62,6 @@ void     debug3(const char *, ...) __att
Tomáš Mráz e01ed6
 
Tomáš Mráz c9833c
 void	 do_log(LogLevel, const char *, va_list);
Tomáš Mráz c9833c
 void	 cleanup_exit(int) __dead;
Tomáš Mráz c9833c
+
Tomáš Mráz c9833c
+void     open_log(void);
Tomáš Mráz c9833c
 #endif