From f3c6cf13837e24ab6ac7b19567bff00dd6c1b161 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Wed, 17 May 2000 22:08:29 +1000 Subject: [PATCH] - Avoid WCOREDUMP complation errors for systems that lack it - Avoid SIGCHLD warnings from entropy commands --- ChangeLog | 2 ++ entropy.c | 10 +++++++++- session.c | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 21cd0a20b..5d28c74dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,8 @@ - 'fixprogs' perl script to eliminate non-working entropy commands, and optionally run 'ent' to measure command entropy - Applied Tom Bertelson's AIX authentication fix + - Avoid WCOREDUMP complation errors for systems that lack it + - Avoid SIGCHLD warnings from entropy commands 20000513 - Fix for non-recognised DSA keys from Arkadiusz Miskiewicz diff --git a/entropy.c b/entropy.c index 79ef93ac6..cc7e81527 100644 --- a/entropy.c +++ b/entropy.c @@ -35,7 +35,7 @@ #include #include -RCSID("$Id: entropy.c,v 1.10 2000/05/17 11:34:08 damien Exp $"); +RCSID("$Id: entropy.c,v 1.11 2000/05/17 12:08:30 damien Exp $"); #ifdef EGD_SOCKET #ifndef offsetof @@ -735,18 +735,26 @@ prng_seed_cleanup(void *junk) void seed_rng(void) { + void *old_sigchld_handler; + if (!prng_commands_loaded) { if (!prng_read_commands(SSH_PRNG_COMMAND_FILE)) fatal("PRNG initialisation failed -- exiting."); prng_commands_loaded = 1; } + /* Make sure some other sigchld handler doesn't reap our entropy */ + /* commands */ + old_sigchld_handler = signal(SIGCHLD, SIG_DFL); + debug("Seeding random number generator."); debug("OpenSSL random status is now %i\n", RAND_status()); debug("%i bytes from system calls", (int)stir_from_system()); debug("%i bytes from programs", (int)stir_from_programs()); debug("OpenSSL random status is now %i\n", RAND_status()); + signal(SIGCHLD, old_sigchld_handler); + if (!RAND_status()) fatal("Couldn't initialise builtin random number generator -- exiting."); diff --git a/session.c b/session.c index 480a1635a..23c566050 100644 --- a/session.c +++ b/session.c @@ -1473,7 +1473,11 @@ session_exit_message(Session *s, int status) channel_request_start(s->chanid, "exit-signal", 0); packet_put_int(WTERMSIG(status)); +#ifdef WCOREDUMP packet_put_char(WCOREDUMP(status)); +#else /* WCOREDUMP */ + packet_put_char(0); +#endif /* WCOREDUMP */ packet_put_cstring(""); packet_put_cstring(""); packet_send();