Curl_rand: Use a fake entropy for debug builds when CURL_ENTROPY set
authorSteve Holme <steve_holme@hotmail.com>
Sun, 8 Jun 2014 19:33:29 +0000 (20:33 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 11 Jun 2014 20:13:40 +0000 (21:13 +0100)
lib/vtls/vtls.c
tests/runtests.pl

index ab7274a..58295a4 100644 (file)
@@ -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
index bf7aaee..5982348 100755 (executable)
@@ -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 {