From a870253cd64a726130b333c6bb75822ad842b8e1 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 31 Jan 2016 23:03:55 +1000 Subject: [PATCH] Common: Use C++ random generator for generating MAC addresses --- Source/Core/Common/Network.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index 23c570045f..c03ed0fc76 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -3,12 +3,13 @@ // Refer to the license.txt file included. #include -#include #include #include +#include #include "Common/Network.h" #include "Common/StringUtil.h" +#include "Common/Timer.h" void GenerateMacAddress(const MACConsumer type, u8* mac) { @@ -27,16 +28,12 @@ void GenerateMacAddress(const MACConsumer type, u8* mac) break; } - srand((unsigned int)time(nullptr)); - - u8 id[3] = - { - (u8)rand(), - (u8)rand(), - (u8)rand() - }; - - memcpy(&mac[3], id, 3); + // Generate the 24-bit NIC-specific portion of the MAC address. + std::default_random_engine generator(Common::Timer::GetTimeMs()); + std::uniform_int_distribution distribution(0x00, 0xFF); + mac[3] = static_cast(distribution(generator)); + mac[4] = static_cast(distribution(generator)); + mac[5] = static_cast(distribution(generator)); } std::string MacAddressToString(const u8* mac)