in flood.c [47:90]
static apr_status_t set_seed(config_t *config)
{
apr_status_t stat;
struct apr_xml_elem *root_elem, *seed_elem;
char *xml_seed = XML_SEED;
unsigned int seed;
/* get the root config node */
if ((stat = retrieve_root_xml_elem(&root_elem, config)) != APR_SUCCESS) {
return stat;
}
/* get the seed node from config */
if ((stat = retrieve_xml_elem_child(&seed_elem, root_elem, xml_seed)) != APR_SUCCESS) {
seed = 1; /* default if not found */
}
else {
if (seed_elem->first_cdata.first && seed_elem->first_cdata.first->text) {
char *endptr;
seed = (unsigned int) strtoll(seed_elem->first_cdata.first->text,
&endptr, 10);
if (*endptr != '\0') {
apr_file_printf(local_stderr,
"XML Node %s has invalid value '%s'.\n",
XML_SEED, seed_elem->first_cdata.first->text);
return APR_EGENERAL;
}
}
else {
seed = 1;
}
}
/* actually set the seed */
#if FLOOD_USE_RAND
srand(seed);
#elif FLOOD_USE_RAND48
srand48(seed);
#elif FLOOD_USE_RANDOM
srandom(seed);
#endif
return APR_SUCCESS;
}