From 9f1a5ab5614976e10c4cfaeb055b6c0058b8ba20 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 17 Jan 2015 17:06:51 +0100 Subject: Never create sockets for an address family without matching binds --- src/socket.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/socket.c') diff --git a/src/socket.c b/src/socket.c index c84d2d1..d464b6e 100644 --- a/src/socket.c +++ b/src/socket.c @@ -242,12 +242,19 @@ fastd_socket_t * fastd_socket_open(fastd_peer_t *peer, int af) { const fastd_bind_address_t *bind_address; - if (af == AF_INET && conf.bind_addr_default_v4) + if (af == AF_INET && conf.bind_addr_default_v4) { bind_address = conf.bind_addr_default_v4; - else if (af == AF_INET6 && conf.bind_addr_default_v6) + } + else if (af == AF_INET6 && conf.bind_addr_default_v6) { bind_address = conf.bind_addr_default_v6; - else + } + else if (!conf.bind_addr_default_v4 && !conf.bind_addr_default_v6) { bind_address = &any_address; + } + else { + pr_debug("not opening an %s socket for peer %P (no bind address with matching address family)", (af == AF_INET6) ? "IPv6" : "IPv4", peer); + return NULL; + } int fd = bind_socket(bind_address, true); if (fd < 0) -- cgit v1.2.3