--- rsaglue.c	Wed Jan 17 11:42:52 2001
+++ rsaglue.c	Tue Feb 13 16:05:33 2001
@@ -264,8 +264,10 @@
   mpz_clear(&aux);
 
   if (value[0] != 0 || value[1] != 2)
+  {
+    kill(getppid(),SIGALRM);
     fatal("Bad result from rsa_private_decrypt");
-
+  }
   for (i = 2; i < len && value[i]; i++)
     ;
 
--- sshd.c	Wed Jan 17 11:42:53 2001
+++ sshd.c	Tue Feb 13 16:05:15 2001
@@ -757,9 +757,11 @@
 
 RETSIGTYPE key_regeneration_alarm(int sig)
 {
+  static time_t last_keygen_time=0;
   /* Check if we should generate a new key. */
-  if (key_used)
-    {
+  if (key_used &&  (time(NULL) - last_keygen_time > 60))
+   {  
+      last_keygen_time = time(NULL);
       /* This should really be done in the background. */
       log_msg("Generating new %d bit RSA key.", options.server_key_bits);
       random_acquire_light_environmental_noise(&sensitive_data.random_state);
