From: Amos Jeffries Date: Sun, 8 Feb 2015 16:53:46 +0000 (-0800) Subject: basic_radius_auth: Convert to C++11 random engine X-Git-Tag: merge-candidate-3-v1~109^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fce06581f483be5a05e9acef5f514a7f259d8b01;p=thirdparty%2Fsquid.git basic_radius_auth: Convert to C++11 random engine --- diff --git a/helpers/basic_auth/RADIUS/basic_radius_auth.cc b/helpers/basic_auth/RADIUS/basic_radius_auth.cc index a0168b9439..ed3d2eefc0 100644 --- a/helpers/basic_auth/RADIUS/basic_radius_auth.cc +++ b/helpers/basic_auth/RADIUS/basic_radius_auth.cc @@ -63,6 +63,7 @@ #include #include #include +#include #if HAVE_SYS_SOCKET_H #include #endif @@ -205,16 +206,11 @@ result_recv(char *buffer, int length) static void random_vector(char *aVector) { - int randno; - int i; - - srand((time(0) ^ rand()) + rand()); - for (i = 0; i < AUTH_VECTOR_LEN;) { - randno = rand(); - memcpy(aVector, &randno, sizeof(int)); - aVector += sizeof(int); - i += sizeof(int); - } + static std::mt19937 mt(time(0)); + static std::uniform_int_distribution dist; + + for (int i = 0; i < AUTH_VECTOR_LEN; ++i) + aVector[i] = static_cast(dist(mt) & 0xFF); } /* read the config file