See ChangeLog: Wed Jan 20 18:59:49 CET 1999 Werner Koch
authorWerner Koch <wk@gnupg.org>
Wed, 20 Jan 1999 18:10:28 +0000 (18:10 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 20 Jan 1999 18:10:28 +0000 (18:10 +0000)
THANKS
cipher/ChangeLog
cipher/rndunix.c

diff --git a/THANKS b/THANKS
index fb9835f..e880ad2 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -72,6 +72,7 @@ SL Baur               steve@xemacs.org
 Stefan Karrmann        S.Karrmann@gmx.net
 Steffen Ullrich        ccrlphr@xensei.com
 Steffen Zahn           zahn@berlin.snafu.de
+Steven Bakker          steven@icoe.att.com
 Susanne Schultz        schultz@hsp.de
 Thiago Jung Bauermann  jungmann@usa.net
 Thomas Roessler        roessler@guug.de
index c46ca5d..273b6fd 100644 (file)
@@ -1,3 +1,7 @@
+Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
+
+       * rndunix.c (gather_random): Fix to avoid infinite loop.
+
 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
 
        * des.c (is_weak_key): Replace system memcmp due to bugs
index f0b6319..716b026 100644 (file)
@@ -709,6 +709,7 @@ gather_random( void (*add)(const void*, size_t, int), int requester,
     /* now read from the gatherer */
     while( length ) {
        int goodness;
+       ulong subtract;
 
        if( read_a_msg( pipedes[0], &msg ) ) {
            g10_log_error("reading from gatherer pipe failed: %s\n",
@@ -742,7 +743,9 @@ gather_random( void (*add)(const void*, size_t, int), int requester,
        (*add)( msg.data, n, requester );
 
        /* this is the trick how e cope with the goodness */
-       length -= (ulong)n * goodness / 100;
+       subtract = (ulong)n * goodness / 100;
+       /* subtract at least 1 byte to avoid infinite loops */
+       length -= subtract ? subtract : 1;
     }
 
     return 0;