Commit 2c3673cd authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Fix error discrepancy.

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 >
parent ba5f75d5
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -154,6 +154,6 @@
#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
+1 −1
Original line number Diff line number Diff line
@@ -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;