From 19e145371d69aa73b51b420d8423642e5abb9028 Mon Sep 17 00:00:00 2001 From: Stefan Fritsch Date: Thu, 15 Sep 2011 19:54:37 +0000 Subject: [PATCH] initialize counter with random number PR: 45110 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1171249 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ modules/metadata/mod_unique_id.c | 9 ++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index 688981faf09..b5c0fa82a0e 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,9 @@ Changes with Apache 2.3.15 PR 51714. [Stefan Fritsch, Jim Jagielski, Ruediger Pluem, Eric Covener, ] + *) 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 diff --git a/modules/metadata/mod_unique_id.c b/modules/metadata/mod_unique_id.c index 7b67b557c76..b710f7f39a8 100644 --- a/modules/metadata/mod_unique_id.c +++ b/modules/metadata/mod_unique_id.c @@ -221,7 +221,6 @@ static int unique_id_global_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *pt 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 @@ -253,11 +252,8 @@ static void unique_id_child_init(apr_pool_t *p, server_rec *s) * 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 @@ -265,7 +261,6 @@ static void unique_id_child_init(apr_pool_t *p, server_rec *s) * 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 -- 2.47.2