]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
basic_radius_auth: Convert to C++11 random engine
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 8 Feb 2015 16:53:46 +0000 (08:53 -0800)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 8 Feb 2015 16:53:46 +0000 (08:53 -0800)
helpers/basic_auth/RADIUS/basic_radius_auth.cc

index a0168b943934579bd5fe982b037d58bebf74dac4..ed3d2eefc0ffd9d94713dc0a820001ecb04c751c 100644 (file)
@@ -63,6 +63,7 @@
 #include <cerrno>
 #include <cstring>
 #include <ctime>
+#include <random>
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #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<uint8_t> dist;
+
+    for (int i = 0; i < AUTH_VECTOR_LEN; ++i)
+        aVector[i] = static_cast<char>(dist(mt) & 0xFF);
 }
 
 /* read the config file