Explorar el Código

* Fix possible memory leak in +r lookups

Bryan Drewery hace 16 años
padre
commit
c9cdab50c6
Se han modificado 1 ficheros con 6 adiciones y 1 borrados
  1. 6 1
      src/mod/irc.mod/chan.c

+ 6 - 1
src/mod/irc.mod/chan.c

@@ -96,7 +96,12 @@ void resolve_to_member(struct chanset_t *chan, char *nick, char *host)
   r->chan = chan;
   r->host = strdup(host);
 
-  egg_dns_lookup(host, 20, resolv_member_callback, (void *) r);
+  if (egg_dns_lookup(host, 20, resolv_member_callback, (void *) r) == -2) { //Already querying?
+    // Querying on clones will cause the callback to not be called and this nick will be ignored
+    // cleanup memory as this chain is not even starting.
+    free(r->host);
+    free(r);
+  }
 }
 
 /* RBL */