# HG changeset patch # User Timo Sirainen # Date 1451934019 18000 # Node ID 25e892203e2bf48efa90b73b9e22f1a4df950ce3 # Parent 06825c099fa17fc4362580a9337ad261804502bb lib: Fixed assert-crash with net_is_in_network(family=ipv6, family=0, ..) diff -r 06825c099fa1 -r 25e892203e2b src/lib/net.c --- a/src/lib/net.c Mon Jan 04 20:51:34 2016 +0200 +++ b/src/lib/net.c Mon Jan 04 14:00:19 2016 -0500 @@ -1125,7 +1125,7 @@ ip = &tmp_ip; } - if (ip->family == 0) { + if (ip->family == 0 || net_ip->family == 0) { /* non-IPv4/IPv6 address (e.g. UNIX socket) never matches anything */ return FALSE; diff -r 06825c099fa1 -r 25e892203e2b src/lib/test-net.c --- a/src/lib/test-net.c Mon Jan 04 20:51:34 2016 +0200 +++ b/src/lib/test-net.c Mon Jan 04 14:00:19 2016 -0500 @@ -46,6 +46,19 @@ input[i].ret; test_out(t_strdup_printf("net_is_in_network(%u)", i), success); } + /* make sure non-IPv4 and non-IPv6 ip_addrs fail */ + test_assert(net_addr2ip("127.0.0.1", &ip) == 0); + net_ip = ip; + net_ip.family = 0; + test_assert(!net_is_in_network(&ip, &net_ip, 0)); + test_assert(!net_is_in_network(&net_ip, &ip, 0)); +#ifdef HAVE_IPV6 + test_assert(net_addr2ip("::1", &ip) == 0); + net_ip = ip; + net_ip.family = 0; + test_assert(!net_is_in_network(&ip, &net_ip, 0)); + test_assert(!net_is_in_network(&net_ip, &ip, 0)); +#endif test_end(); }