Fix an infinite loop in ircd.c and skip clone checking for 0.0.0.0 clients.
[ircu2.10.12-pk.git] / ircd / IPcheck.c
index 4c1521f2e9d92f20f52e07b58fd6b5e9368f6624..af94d8cc50ba4a8484fdc778ff65ccfb87cfa32c 100644 (file)
@@ -326,12 +326,15 @@ int ip_registry_check_local(const struct irc_in_addr *addr, time_t* next_target_
  */
 int ip_registry_check_remote(struct Client* cptr, int is_burst)
 {
-  struct IPRegistryEntry* entry = ip_registry_find(&cli_ip(cptr));
+  struct IPRegistryEntry* entry;
 
   /*
    * Mark that we did add/update an IPregistry entry
    */
   SetIPChecked(cptr);
+  if (!irc_in_addr_valid(&cli_ip(cptr)))
+    return 1;
+  entry = ip_registry_find(&cli_ip(cptr));
   if (0 == entry) {
     entry = ip_registry_new_entry();
     ip_registry_canonicalize(&entry->addr, &cli_ip(cptr));