Fix error discrepancy.
authorDr. Stephen Henson <steve@openssl.org>
Thu, 31 Jul 2014 20:22:23 +0000 (21:22 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 1 Aug 2014 17:42:40 +0000 (18:42 +0100)
We can't rename ssleay_rand_bytes to md_rand_bytes_lock as this will cause
an error code discrepancy. Instead keep ssleay_rand_bytes and add an
extra parameter: since ssleay_rand_bytes is not part of the public API
this wont cause any binary compatibility issues.
Reviewed-by: Kurt Roeckx <kurt@openssl.org >
(cherry picked from commit 8068a675a7d1a657c54546f24e673e59e6707f03)

crypto/rand/md_rand.c
crypto/rand/rand_lcl.h
crypto/rand/rand_lib.c

index 5dd0a37d65203f769559063e84d8c39c626107c9..888b4eb8dd0bd94bb340e0d3aa803cd5327ce70e 100644 (file)
@@ -159,7 +159,6 @@ const char RAND_version[]="RAND" OPENSSL_VERSION_PTEXT;
 static void ssleay_rand_cleanup(void);
 static void ssleay_rand_seed(const void *buf, int num);
 static void ssleay_rand_add(const void *buf, int num, double add_entropy);
-static int ssleay_rand_bytes(unsigned char *buf, int num, int pseudo);
 static int ssleay_rand_nopseudo_bytes(unsigned char *buf, int num);
 static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num);
 static int ssleay_rand_status(void);
@@ -334,12 +333,7 @@ static void ssleay_rand_seed(const void *buf, int num)
        ssleay_rand_add(buf, num, (double)num);
        }
 
-static int ssleay_rand_bytes(unsigned char *buf, int num, int pseudo)
-       {
-       return md_rand_bytes_lock(buf, num, pseudo, 1);
-       }
-
-int md_rand_bytes_lock(unsigned char *buf, int num, int pseudo, int lock)
+int ssleay_rand_bytes(unsigned char *buf, int num, int pseudo, int lock)
        {
        static volatile int stirred_pool = 0;
        int i,j,k,st_num,st_idx;
@@ -544,14 +538,14 @@ int md_rand_bytes_lock(unsigned char *buf, int num, int pseudo, int lock)
 
 static int ssleay_rand_nopseudo_bytes(unsigned char *buf, int num)
        {
-       return ssleay_rand_bytes(buf, num, 0);
+       return ssleay_rand_bytes(buf, num, 0, 1);
        }
 
 /* pseudo-random bytes that are guaranteed to be unique but not
    unpredictable */
 static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) 
        {
-       return ssleay_rand_bytes(buf, num, 1);
+       return ssleay_rand_bytes(buf, num, 1, 1);
        }
 
 static int ssleay_rand_status(void)
index 725cdb31c242e37393190f8fded04542fa9cd781..0fabf8dc5d90646261405ee3efd590c8427ce5df 100644 (file)
 #define        MD(a,b,c)               EVP_Digest(a,b,c,NULL,EVP_md2(), NULL)
 #endif
 
-int md_rand_bytes_lock(unsigned char *buf, int num, int pseudo, int lock);
+int ssleay_rand_bytes(unsigned char *buf, int num, int pseudo, int lock);
 
 #endif
index 54f1d35c6c71cfd2493757f94d0360895b68a64f..239a1cde81894e9eece5b46e6dd770fc42075971 100644 (file)
@@ -200,7 +200,7 @@ static size_t drbg_get_entropy(DRBG_CTX *ctx, unsigned char **pout,
        *pout = OPENSSL_malloc(min_len);
        if (!*pout)
                return 0;
-       if (md_rand_bytes_lock(*pout, min_len, 0, 0) <= 0)
+       if (ssleay_rand_bytes(*pout, min_len, 0, 0) <= 0)
                {
                OPENSSL_free(*pout);
                *pout = NULL;