mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
resolve: refactor address family logic in tor_addr_lookup()
Cleanup after 30721.
This commit is contained in:
parent
cd1de99468
commit
29cf64c838
1 changed files with 7 additions and 13 deletions
|
@ -81,30 +81,24 @@ tor_addr_lookup,(const char *name, uint16_t family, tor_addr_t *addr))
|
|||
tor_assert(addr);
|
||||
tor_assert(family == AF_INET || family == AF_INET6 || family == AF_UNSPEC);
|
||||
|
||||
/* Clear address before starting, to avoid returning uninitialised data */
|
||||
memset(addr, 0, sizeof(tor_addr_t));
|
||||
|
||||
if (!*name) {
|
||||
/* Empty address is an error. */
|
||||
memset(addr, 0, sizeof(tor_addr_t));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Is it an IP address? */
|
||||
parsed_family = tor_addr_parse(addr, name);
|
||||
|
||||
if (parsed_family == AF_INET) {
|
||||
/* It's an IPv4 IP. */
|
||||
if (family == AF_INET6) {
|
||||
if (parsed_family >= 0) {
|
||||
/* If the IP address family matches, or was unspecified */
|
||||
if (parsed_family == family || family == AF_UNSPEC) {
|
||||
return 0;
|
||||
} else {
|
||||
/* Clear the address before returning an error. */
|
||||
memset(addr, 0, sizeof(tor_addr_t));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
} else if (parsed_family == AF_INET6) {
|
||||
if (family == AF_INET) {
|
||||
memset(addr, 0, sizeof(tor_addr_t));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
/* Clear the address after a failed tor_addr_parse(). */
|
||||
memset(addr, 0, sizeof(tor_addr_t));
|
||||
|
|
Loading…
Add table
Reference in a new issue