From 51bb067a4289f5e4717391eb62f91465706b4ebc Mon Sep 17 00:00:00 2001
From: Steve Holme <steve_holme@hotmail.com>
Date: Sun, 8 Jun 2014 20:33:29 +0100
Subject: [PATCH] Curl_rand: Use a fake entropy for debug builds when
 CURL_ENTROPY set

---
 lib/vtls/vtls.c   | 19 ++++++++++++++++++-
 tests/runtests.pl |  1 +
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index ab7274ace..58295a4de 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -197,6 +197,23 @@ unsigned int Curl_rand(struct SessionHandle *data)
   static unsigned int randseed;
   static bool seeded = FALSE;
 
+#ifdef CURLDEBUG
+  char *force_entropy = getenv("CURL_ENTROPY");
+  if(force_entropy) {
+    if(!seeded) {
+      size_t elen = strlen(force_entropy);
+      size_t clen = sizeof(randseed);
+      size_t min = elen < clen ? elen : clen;
+      memcpy((char *)&randseed, force_entropy, min);
+      seeded = TRUE;
+    }
+    else
+      randseed++;
+
+    return randseed;
+  }
+#endif
+
 #ifndef have_curlssl_random
   (void)data;
 #else
diff --git a/tests/runtests.pl b/tests/runtests.pl
index bf7aaeed1..5982348e9 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -311,6 +311,7 @@ if (!$USER) {
 
 # enable memory debugging if curl is compiled with it
 $ENV{'CURL_MEMDEBUG'} = $memdump;
+$ENV{'CURL_ENTROPY'}="12345678";
 $ENV{'HOME'}=$pwd;
 
 sub catch_zap {