Browse Source

DHCPClient: Actually randomize transaction ID's (XID)

We were using unseeded rand() for the XID, which meant that our DHCP
XID's were 100% predictable.

Switch to using AK::get_random<u32>() instead. :^)
Andreas Kling 4 years ago
parent
commit
86a3363ddf
1 changed files with 2 additions and 1 deletions
  1. 2 1
      Userland/Services/DHCPClient/DHCPv4Client.cpp

+ 2 - 1
Userland/Services/DHCPClient/DHCPv4Client.cpp

@@ -29,6 +29,7 @@
 #include <AK/Debug.h>
 #include <AK/Endian.h>
 #include <AK/Function.h>
+#include <AK/Random.h>
 #include <LibCore/SocketAddress.h>
 #include <LibCore/Timer.h>
 #include <stdio.h>
@@ -239,7 +240,7 @@ void DHCPv4Client::process_incoming(const DHCPv4Packet& packet)
 
 void DHCPv4Client::dhcp_discover(const InterfaceDescriptor& iface, IPv4Address previous)
 {
-    auto transaction_id = rand();
+    auto transaction_id = get_random<u32>();
 
     if constexpr (DHCPV4CLIENT_DEBUG) {
         dbgln("Trying to lease an IP for {} with ID {}", iface.m_ifname, transaction_id);