]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
calidns: Use the full 32-bit range for 0.0.0.0/0, via Otto
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 12 Jul 2023 11:07:29 +0000 (13:07 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 1 Aug 2023 08:09:56 +0000 (10:09 +0200)
pdns/calidns.cc

index 9afdbe93afb0f67714722754172d32445e4e0c04..9a428ac4c35f9c895aa438380a41fe451b6bc474 100644 (file)
@@ -121,8 +121,14 @@ static ComboAddress getRandomAddressFromRange(const Netmask& ecsRange)
 {
   ComboAddress result = ecsRange.getMaskedNetwork();
   uint8_t bits = ecsRange.getBits();
-  uint32_t mod = (bits > 0) ? (1 << (32 - bits)) : std::numeric_limits<uint32_t>::max();
-  result.sin4.sin_addr.s_addr = result.sin4.sin_addr.s_addr + ntohl(dns_random(mod));
+  if (bits > 0) {
+    uint32_t mod = 1 << (32 - bits);
+    result.sin4.sin_addr.s_addr = result.sin4.sin_addr.s_addr + ntohl(dns_random(mod));
+  }
+  else {
+    result.sin4.sin_addr.s_addr = dns_random_uint32();
+  }
+
   return result;
 }