Fix OAI_RNGSEED to capture unsigned long
atoi() used previously does not capture all of unsigned long (so we could not reproduce a high seed), and its use is discouraged as it does not detect errors. Use strtoul() instead, which allows to also use other bases (so we can e.g., write OAI_RNGSEED=0x1234)
This commit is contained in:
@@ -56,7 +56,14 @@ void randominit()
|
|||||||
unsigned long seed;
|
unsigned long seed;
|
||||||
const char* str_oai_rngseed = getenv("OAI_RNGSEED");
|
const char* str_oai_rngseed = getenv("OAI_RNGSEED");
|
||||||
if (str_oai_rngseed != NULL) {
|
if (str_oai_rngseed != NULL) {
|
||||||
seed = atoi(str_oai_rngseed);
|
char *end;
|
||||||
|
seed = strtoul(str_oai_rngseed, &end, 0); /* 0: any base in hex, dec, oct */
|
||||||
|
AssertFatal(*end == '\0' || *end == '\n',
|
||||||
|
"could not read seed %s at char '%c' (%d), pos %ld\n",
|
||||||
|
str_oai_rngseed,
|
||||||
|
*end,
|
||||||
|
*end,
|
||||||
|
end - str_oai_rngseed);
|
||||||
} else {
|
} else {
|
||||||
fill_random(&seed, sizeof(seed));
|
fill_random(&seed, sizeof(seed));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user