PR 51714. [Stefan Fritsch, Jim Jagielski, Ruediger Pluem, Eric Covener,
<lowprio20 gmail.com>]
+ *) mod_unique_id: Use random number generator to initialize counter.
+ PR 45110. [Stefan Fritsch]
+
*) core: Add convenience API for apr_random. [Stefan Fritsch]
*) core: Add MaxRangeOverlaps and MaxRangeReversals directives to control
static void unique_id_child_init(apr_pool_t *p, server_rec *s)
{
pid_t pid;
- apr_time_t tv;
/*
* Note that we use the pid because it's possible that on the same
* against restart problems, and a little less protection against a clock
* going backwards in time.
*/
- tv = apr_time_now();
- /* Some systems have very low variance on the low end of their system
- * counter, defend against that.
- */
- cur_unique_id.counter = (unsigned short)(apr_time_usec(tv) / 10);
+ ap_random_insecure_bytes(&cur_unique_id.counter,
+ sizeof(cur_unique_id.counter));
/*
* We must always use network ordering for these bytes, so that
* orderings. Note in_addr is already in network order.
*/
cur_unique_id.pid = htonl(cur_unique_id.pid);
- cur_unique_id.counter = htons(cur_unique_id.counter);
}
/* NOTE: This is *NOT* the same encoding used by base64encode ... the last two