From: damien Date: Wed, 17 May 2000 12:08:29 +0000 (+0000) Subject: - Avoid WCOREDUMP complation errors for systems that lack it X-Git-Tag: V_2_1_0_P1~6 X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/commitdiff_plain/a64009adc6e7c2b6e98c0fd92b8f4482265aa0ae - Avoid WCOREDUMP complation errors for systems that lack it - Avoid SIGCHLD warnings from entropy commands --- diff --git a/ChangeLog b/ChangeLog index 21cd0a20..5d28c74d 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 fc7e209d..2e0c1c50 100644 --- a/entropy.c +++ b/entropy.c @@ -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 480a1635..23c56605 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();