From 4e4c4e72d74d66181bec537fc00a8af92be0a0af Mon Sep 17 00:00:00 2001 From: liberat Date: Mon, 11 Nov 2019 15:08:36 +0000 Subject: Handle binary IPv6 addresses and bracketed strings in RESOLVE_PTR. When a SOCKS5 client sends a RESOLVE_PTR request, it must include either an IPv4 or IPv6 address. In the past this was required to be a binary address (address types 1 or 4), but since the refactoring of SOCKS5 support in Tor 0.3.5.1-alpha, strings (address type 3) are also allowed if they represent an IPv4 or IPv6 literal. However, when a binary IPv6 address is provided, parse_socks5_client_request converts it into a string enclosed in brackets. This doesn't match what string_is_valid_ipv6_address expects, so this would fail with the error "socks5 received RESOLVE_PTR command with hostname type. Rejecting." By replacing string_is_valid_ipv4_address/string_is_valid_ipv6_address with tor_addr_parse, we accept strings both with and without brackets. This fixes the handling of binary addresses, and also improves symmetry with CONNECT and RESOLVE requests. Fixes bug 32315. --- changes/bug32315 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changes/bug32315 (limited to 'changes') diff --git a/changes/bug32315 b/changes/bug32315 new file mode 100644 index 0000000000..9b48d8259a --- /dev/null +++ b/changes/bug32315 @@ -0,0 +1,4 @@ + o Major bugfixes (networking): + - Correctly handle IPv6 addresses in SOCKS5 RESOLVE_PTR requests, + and accept strings as well as binary addresses. Fixes bug 32315; + bugfix on Tor 0.3.5.1-alpha. -- cgit v1.2.3-54-g00ecf