]> arthur.barton.de Git - ngircd-alex.git/commitdiff
fix assertion failure in ng_ipaddr.c
authorFlorian Westphal <fw@strlen.de>
Sat, 26 Sep 2009 09:12:47 +0000 (11:12 +0200)
committerFlorian Westphal <fw@strlen.de>
Sat, 26 Sep 2009 09:12:47 +0000 (11:12 +0200)
when building with debugging enabled, but without ipv6 support,
ngircd dumped core when loading a config file that specified an ipv6
listen address.

ngircd: ng_ipaddr.c:45: ng_ipaddr_init: Assertion `sizeof(*addr) >=
res0->ai_addrlen' failed.

src/ipaddr/ng_ipaddr.c

index 4f1d4ca40492562858e87357c107c320b85c48b2..af524d091fa569dd874559a3f032f5dcc0cfde6d 100644 (file)
@@ -30,6 +30,9 @@ ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
 
        memset(&hints, 0, sizeof(hints));
        hints.ai_flags = AI_NUMERICHOST;
+#ifndef WANT_IPV6      /* do not convert ipv6 addresses */
+       hints.ai_family = AF_INET;
+#endif
 
        /* some getaddrinfo implementations require that ai_socktype is set. */
        hints.ai_socktype = SOCK_STREAM;
@@ -38,7 +41,6 @@ ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
        snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
 
        ret = getaddrinfo(ip_str, portstr, &hints, &res0);
-       assert(ret == 0);
        if (ret != 0)
                return false;