# HG changeset patch # User Timo Sirainen # Date 1363689583 -7200 # Node ID 790bb5dfadc6ce0d8b4556cff8c15a4024430c55 # Parent ea6636b36b1c3a70cdfd6dc7b033f55531f7cdfe net_is_in_network(): Don't assert-crash with invalid IP. It's probably better to do the check here instead of remembering for caller to do the check. diff -r ea6636b36b1c -r 790bb5dfadc6 src/lib/net.c --- a/src/lib/net.c Tue Mar 19 12:18:25 2013 +0200 +++ b/src/lib/net.c Tue Mar 19 12:39:43 2013 +0200 @@ -984,6 +984,11 @@ ip = &tmp_ip; } + if (ip->family == 0) { + /* non-IPv4/IPv6 address (e.g. UNIX socket) never matches + anything */ + return FALSE; + } if (IPADDR_IS_V4(ip) != IPADDR_IS_V4(net_ip)) { /* one is IPv6 and one is IPv4 */ return FALSE; diff -r ea6636b36b1c -r 790bb5dfadc6 src/lib/net.h --- a/src/lib/net.h Tue Mar 19 12:18:25 2013 +0200 +++ b/src/lib/net.h Tue Mar 19 12:39:43 2013 +0200 @@ -145,7 +145,8 @@ int net_parse_range(const char *network, struct ip_addr *ip_r, unsigned int *bits_r); /* Returns TRUE if ip is in net_ip/bits network. IPv6 mapped IPv4 addresses - are converted to plain IPv4 addresses before matching. */ + are converted to plain IPv4 addresses before matching. Invalid IPs + (family=0) never match anything. */ bool net_is_in_network(const struct ip_addr *ip, const struct ip_addr *net_ip, unsigned int bits) ATTR_PURE;