Commit 695931cf authored by Patrick Monnerat's avatar Patrick Monnerat
Browse files

Merge branch 'master' of github.com:bagder/curl

Merge for resync
parents 964a7600 d4492f95
Loading
Loading
Loading
Loading
+29 −31
Original line number Diff line number Diff line
@@ -187,26 +187,32 @@ unsigned int Curl_rand(struct SessionHandle *data)
{
  unsigned int r;
  static unsigned int randseed;
  static bool seeded;
  static bool seeded = FALSE;

#ifdef have_curlssl_random
  if(!data) {
#ifndef have_curlssl_random
  (void)data;
#else
  if(data) {
    Curl_ssl_random(data, (unsigned char *)&r, sizeof(r));
    return r;
  }
#endif

    if(!seeded) {

#ifdef RANDOM_FILE
  if(!seeded) {
    /* if there's a random file to read a seed from, use it */
    int fd = open(RANDOM_FILE, O_RDONLY);
      seeded = TRUE;
    if(fd > -1) {
      /* read random data into the randseed variable */
        read(fd, &randseed, sizeof(randseed));
      ssize_t nread = read(fd, &randseed, sizeof(randseed));
      if(nread == sizeof(randseed))
        seeded = TRUE;
      close(fd);
    }
      else
#endif /* RANDOM_FILE */
      {
  }
#endif

  if(!seeded) {
    struct timeval now = curlx_tvnow();
    randseed += (unsigned int)now.tv_usec + (unsigned int)now.tv_sec;
    randseed = randseed * 1103515245 + 12345;
@@ -214,18 +220,10 @@ unsigned int Curl_rand(struct SessionHandle *data)
    randseed = randseed * 1103515245 + 12345;
    seeded = TRUE;
  }
    }

  /* Return an unsigned 32-bit pseudo-random number. */
  r = randseed = randseed * 1103515245 + 12345;
  return (r << 16) | ((r >> 16) & 0xFFFF);

#ifdef have_curlssl_random
  }
  else {
    Curl_ssl_random(data, (unsigned char *)&r, sizeof(r));
    return r;
  }
#endif
}

#ifdef USE_SSL