Return if ssleay_rand_add called with zero num.
authorDr. Stephen Henson <steve@openssl.org>
Sun, 6 Apr 2014 22:11:20 +0000 (23:11 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 7 Apr 2014 18:44:45 +0000 (19:44 +0100)
Treat a zero length passed to ssleay_rand_add a no op: the existing logic
zeroes the md value which is very bad. OpenSSL itself never does this
internally and the actual call doesn't make sense as it would be passing
zero bytes of entropy.

Thanks to Marcus Meissner <meissner@suse.de> for reporting this bug.
(cherry picked from commit 5be1ae28ef3c4bdec95b94f14e0e939157be550a)

crypto/rand/md_rand.c

index 6cab3087bbe20895aa5b49584d491990356f0b6e..67ac5ac92721293bbaeb41efa7b41cdfa969e33d 100644 (file)
@@ -212,6 +212,9 @@ static int ssleay_rand_add(const void *buf, int num, double add)
        int do_not_lock;
        int rv = 0;
 
+       if (!num)
+               return;
+
        /*
         * (Based on the rand(3) manpage)
         *