- (djm) Automatically generate host key during "make install". Suggested
by Gary E. Miller <gem@rellim.com>
- (djm) Paranoia before kill() system call
diff --git a/ChangeLog b/ChangeLog
index 4d76c13..c35b736 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+20000622
+ - (djm) Automatically generate host key during "make install". Suggested
+ by Gary E. Miller <gem@rellim.com>
+ - (djm) Paranoia before kill() system call
+
20000620
- (djm) Replace use of '-o' and '-a' logical operators in configure tests
with '||' and '&&'. As suggested by Jim Knoble <jmknoble@pint-stowp.cx>
diff --git a/Makefile.in b/Makefile.in
index b18444d..f5af10d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -112,7 +112,9 @@
>$${f%%.[18]}.0 ; \
done
-install: manpages $(TARGETS)
+install: manpages $(TARGETS) install-files host-key
+
+install-files:
./mkinstalldirs $(DESTDIR)$(bindir)
./mkinstalldirs $(DESTDIR)$(sbindir)
./mkinstalldirs $(DESTDIR)$(mandir)
@@ -134,7 +136,6 @@
ln -s ssh $(DESTDIR)$(bindir)/slogin
-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
ln -s ssh.1 $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
-
if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config -a ! -f $(DESTDIR)$(sysconfdir)/sshd_config ]; then \
./mkinstalldirs $(DESTDIR)$(sysconfdir); \
$(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \
@@ -146,6 +147,18 @@
fi
host-key: ssh-keygen
+ if [ -f "$(sysconfdir)/ssh_host_key" ] ; then \
+ echo "$(sysconfdir)/ssh_host_key already exists, skipping." ; \
+ else \
+ ./ssh-keygen -b 1024 -f $(sysconfdir)/ssh_host_key -N "" ; \
+ fi ; \
+ if [ -f $(sysconfdir)/ssh_host_dsa_key ] ; then \
+ echo "$(sysconfdir)/ssh_host_dsa_key already exists, skipping." ; \
+ else \
+ ./ssh-keygen -d -f $(sysconfdir)/ssh_host_dsa_key -N "" ; \
+ fi ;
+
+host-key-force: ssh-keygen
./ssh-keygen -b 1024 -f $(sysconfdir)/ssh_host_key -N ""
./ssh-keygen -d -f $(sysconfdir)/ssh_host_dsa_key -N ""
diff --git a/session.c b/session.c
index 64e240b..0026523 100644
--- a/session.c
+++ b/session.c
@@ -1608,7 +1608,9 @@
session_close(s);
} else {
/* notify child, delay session cleanup */
- if (kill(s->pid, (s->ttyfd == -1) ? SIGTERM : SIGHUP) < 0)
+ if (s->pid <= 1)
+ error("session_close_by_channel: Unsafe s->pid = %d", s->pid);
+ else if (kill(s->pid, (s->ttyfd == -1) ? SIGTERM : SIGHUP) < 0)
error("session_close_by_channel: kill %d: %s",
s->pid, strerror(errno));
}