Improve bracket handling in tor_addr_parse()

* Actually check for second bracket
* Only attempt parsing IPv4 address when no brackets found
This commit is contained in:
rl1987
2018-08-31 18:55:36 +03:00
parent 1c62adb65b
commit 23ed863da4
+7 -2
View File
@@ -1187,14 +1187,19 @@ tor_addr_parse(tor_addr_t *addr, const char *src)
int result;
struct in_addr in_tmp;
struct in6_addr in6_tmp;
int brackets_detected = 0;
tor_assert(addr && src);
if (src[0] == '[' && src[1])
if (src[0] == '[' && src[1] && src[strlen(src)-1] == ']') {
brackets_detected = 1;
src = tmp = tor_strndup(src+1, strlen(src)-2);
}
if (tor_inet_pton(AF_INET6, src, &in6_tmp) > 0) {
result = AF_INET6;
tor_addr_from_in6(addr, &in6_tmp);
} else if (tor_inet_pton(AF_INET, src, &in_tmp) > 0) {
} else if (!brackets_detected &&
tor_inet_pton(AF_INET, src, &in_tmp) > 0) {
result = AF_INET;
tor_addr_from_in(addr, &in_tmp);
} else {