summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-06-22 20:57:11 +1000
committerDamien Miller <djm@mindrot.org>2000-06-22 20:57:11 +1000
commit099f505f9526311e48f828e95d90d488fe237219 (patch)
tree38d1401b60647403fb082f38b5b632d13d1e4665
parent2f02295d31a34820d2c5a862ffeffd0d042502b2 (diff)
- (djm) Automatically generate host key during "make install". Suggested
by Gary E. Miller <gem@rellim.com> - (djm) Paranoia before kill() system call
-rw-r--r--ChangeLog5
-rw-r--r--Makefile.in17
-rw-r--r--session.c4
3 files changed, 23 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d76c135..c35b7366 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 b18444d3..f5af10d7 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -112,7 +112,9 @@ catman-do:
>$${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 @@ install: manpages $(TARGETS)
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 @@ install: manpages $(TARGETS)
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 64e240b7..00265230 100644
--- a/session.c
+++ b/session.c
@@ -1608,7 +1608,9 @@ session_close_by_channel(int id, void *arg)
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));
}