mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Replaced use of standard C library rand()/srand() by our own pseudo-random number generator.
This commit is contained in:
parent
7eb59de7df
commit
c32cf33a16
4
CHANGES
4
CHANGES
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Patrick Monnerat (15 Jun 2009)
|
||||||
|
- Replaced use of standard C library rand()/srand() by our own pseudo-random
|
||||||
|
number generator.
|
||||||
|
|
||||||
Yang Tse (11 Jun 2009)
|
Yang Tse (11 Jun 2009)
|
||||||
- I adapted testcurl script to allow building test harness programs when
|
- I adapted testcurl script to allow building test harness programs when
|
||||||
cross-compiling for a *-*-mingw* host.
|
cross-compiling for a *-*-mingw* host.
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
#include "http_ntlm.h"
|
#include "http_ntlm.h"
|
||||||
#include "connect.h" /* for Curl_getconnectinfo */
|
#include "connect.h" /* for Curl_getconnectinfo */
|
||||||
#include "slist.h"
|
#include "slist.h"
|
||||||
|
#include "formdata.h" /* For Curl_srand(). */
|
||||||
|
|
||||||
#define _MPRINTF_REPLACE /* use our functions only */
|
#define _MPRINTF_REPLACE /* use our functions only */
|
||||||
#include <curl/mprintf.h>
|
#include <curl/mprintf.h>
|
||||||
@ -289,6 +290,10 @@ CURLcode curl_global_init(long flags)
|
|||||||
|
|
||||||
init_flags = flags;
|
init_flags = flags;
|
||||||
|
|
||||||
|
/* Preset pseudo-random number sequence. */
|
||||||
|
|
||||||
|
Curl_srand();
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,6 +108,12 @@ Content-Disposition: form-data; name="FILECONTENT"
|
|||||||
/* Length of the random boundary string. */
|
/* Length of the random boundary string. */
|
||||||
#define BOUNDARY_LENGTH 40
|
#define BOUNDARY_LENGTH 40
|
||||||
|
|
||||||
|
/* Private pseudo-random number seed. Unsigned integer >= 32bit. Threads
|
||||||
|
mutual exclusion is not implemented to acess it since we do not require
|
||||||
|
high quality random numbers (only used in form boudary generation). */
|
||||||
|
|
||||||
|
static unsigned int randseed;
|
||||||
|
|
||||||
#if !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY)
|
#if !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY)
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -1597,6 +1603,8 @@ int main(int argc, argv_item_t argv[])
|
|||||||
(void) argc;
|
(void) argc;
|
||||||
(void) argv;
|
(void) argv;
|
||||||
|
|
||||||
|
Curl_srand(); /* Because we do not call curl_global_init() here. */
|
||||||
|
|
||||||
if(FormAddTest("simple COPYCONTENTS test", &httppost, &last_post,
|
if(FormAddTest("simple COPYCONTENTS test", &httppost, &last_post,
|
||||||
CURLFORM_COPYNAME, name1, CURLFORM_COPYCONTENTS, value1,
|
CURLFORM_COPYNAME, name1, CURLFORM_COPYCONTENTS, value1,
|
||||||
CURLFORM_END))
|
CURLFORM_END))
|
||||||
@ -1733,8 +1741,6 @@ void curl_formfree(struct curl_httppost *form)
|
|||||||
char *Curl_FormBoundary(void)
|
char *Curl_FormBoundary(void)
|
||||||
{
|
{
|
||||||
char *retstring;
|
char *retstring;
|
||||||
static int randomizer; /* this is just so that two boundaries within
|
|
||||||
the same form won't be identical */
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
static const char table16[]="0123456789abcdef";
|
static const char table16[]="0123456789abcdef";
|
||||||
@ -1744,12 +1750,10 @@ char *Curl_FormBoundary(void)
|
|||||||
if(!retstring)
|
if(!retstring)
|
||||||
return NULL; /* failed */
|
return NULL; /* failed */
|
||||||
|
|
||||||
srand((unsigned int)time(NULL)+randomizer++); /* seed */
|
|
||||||
|
|
||||||
strcpy(retstring, "----------------------------");
|
strcpy(retstring, "----------------------------");
|
||||||
|
|
||||||
for(i=strlen(retstring); i<BOUNDARY_LENGTH; i++)
|
for(i=strlen(retstring); i<BOUNDARY_LENGTH; i++)
|
||||||
retstring[i] = table16[rand()%16];
|
retstring[i] = table16[Curl_rand()%16];
|
||||||
|
|
||||||
/* 28 dashes and 12 hexadecimal digits makes 12^16 (184884258895036416)
|
/* 28 dashes and 12 hexadecimal digits makes 12^16 (184884258895036416)
|
||||||
combinations */
|
combinations */
|
||||||
@ -1759,3 +1763,24 @@ char *Curl_FormBoundary(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY) */
|
#endif /* !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY) */
|
||||||
|
|
||||||
|
/* Pseudo-random number support. This is always enabled, since called from
|
||||||
|
curl_global_init(). */
|
||||||
|
|
||||||
|
unsigned int Curl_rand(void)
|
||||||
|
{
|
||||||
|
unsigned int r;
|
||||||
|
/* Return an unsigned 32-bit pseudo-random number. */
|
||||||
|
r = randseed = randseed * 1103515245 + 12345;
|
||||||
|
return (r << 16) | ((r >> 16) & 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Curl_srand(void)
|
||||||
|
{
|
||||||
|
/* Randomize pseudo-random number sequence. */
|
||||||
|
|
||||||
|
randseed = (unsigned int) time(NULL);
|
||||||
|
Curl_rand();
|
||||||
|
Curl_rand();
|
||||||
|
Curl_rand();
|
||||||
|
}
|
||||||
|
@ -97,5 +97,8 @@ void Curl_formclean(struct FormData **);
|
|||||||
|
|
||||||
CURLcode Curl_formconvert(struct SessionHandle *, struct FormData *);
|
CURLcode Curl_formconvert(struct SessionHandle *, struct FormData *);
|
||||||
|
|
||||||
|
void Curl_srand(void);
|
||||||
|
unsigned int Curl_rand(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user