aboutsummaryrefslogtreecommitdiff
path: root/src/lib/net/address.c
diff options
context:
space:
mode:
authorteor <teor@torproject.org>2020-04-01 09:56:00 +1000
committerMrSquanchee <usuraj35@gmail.com>2020-04-07 23:11:17 +0530
commit1720a2191d6b94e1847a2ad3a2c45c5e8de53bcd (patch)
treebe5df10a85f00891e3012f93d58b777d561bd289 /src/lib/net/address.c
parentcbd3f88831f4a0f6cd9450621e50d8ba062f76ef (diff)
downloadtor-1720a2191d6b94e1847a2ad3a2c45c5e8de53bcd.tar.gz
tor-1720a2191d6b94e1847a2ad3a2c45c5e8de53bcd.zip
address: Simplify tor_addr_is_valid()
And rewrite the function comment. Part of 33679.
Diffstat (limited to 'src/lib/net/address.c')
-rw-r--r--src/lib/net/address.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/lib/net/address.c b/src/lib/net/address.c
index 7b24e406a4..5dbef6a79d 100644
--- a/src/lib/net/address.c
+++ b/src/lib/net/address.c
@@ -817,9 +817,12 @@ tor_addr_is_loopback(const tor_addr_t *addr)
/* Is addr valid?
* Checks that addr is non-NULL and not tor_addr_is_null().
- * If for_listening is true, addr is allowed in either case if
- * addr is 0.0.0.0 (for IPv4) or :: (for IPv6).
- * It means "bind to all addresses on the local machine". */
+ * If for_listening is true, all IPv4 and IPv6 addresses are valid, including
+ * 0.0.0.0 (for IPv4) and :: (for IPv6). When listening, these addresses mean
+ * "bind to all addresses on the local machine".
+ * Otherwise, 0.0.0.0 and :: are invalid, because they are null addresses.
+ * All unspecified and unix addresses are invalid, regardless of for_listening.
+ */
int
tor_addr_is_valid(const tor_addr_t *addr, int for_listening)
{
@@ -828,14 +831,11 @@ tor_addr_is_valid(const tor_addr_t *addr, int for_listening)
return 0;
}
- /* Only allow IPv4 0.0.0.0 for_listening. */
- if (for_listening && addr->family == AF_INET
- && tor_addr_to_ipv4h(addr) == 0) {
- return 1;
- }
-
- if (for_listening && addr->family == AF_INET6) {
- return 1;
+ /* Allow all IPv4 and IPv6 addresses, when for_listening is true */
+ if (for_listening) {
+ if (addr->family == AF_INET || addr->family == AF_INET6) {
+ return 1;
+ }
}
/* Otherwise, the address is valid if it's not tor_addr_is_null() */