]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix bracketed IPv6 string validation
authorrl1987 <rl1987@sdf.lonestar.org>
Mon, 12 Feb 2018 18:52:47 +0000 (19:52 +0100)
committerNick Mathewson <nickm@torproject.org>
Wed, 28 Mar 2018 11:39:03 +0000 (07:39 -0400)
src/common/util.c
src/test/test_socks.c

index 7c715fb3cdd2f103a318aec5d0560af48419dd74..ea0ec3daee8489e1c4ecbf69fb6461515accbe01 100644 (file)
@@ -1079,9 +1079,22 @@ string_is_valid_ipv6_address(const char *string)
 int
 string_is_valid_dest(const char *string)
 {
-  return string_is_valid_ipv4_address(string) ||
+  char *tmp = NULL;
+  int retval;
+
+  tor_assert(string);
+  tor_assert(strlen(string) > 0);
+
+  if (string[0] == '[' && string[strlen(string) - 1] == ']')
+    string = tmp = tor_strndup(string + 1, strlen(string) - 2);
+
+  retval = string_is_valid_ipv4_address(string) ||
     string_is_valid_ipv6_address(string) ||
     string_is_valid_hostname(string);
+
+  tor_free(tmp);
+
+  return retval;
 }
 
 /** Return true iff <b>string</b> matches a pattern of DNS names
index 70509e43e7b0921e2160e9f629ad1c6c951c8be0..3f9cc887b690c88cc70dc9c99e36c2f8ac7b7483 100644 (file)
@@ -355,7 +355,7 @@ test_socks_5_supported_commands(void *ptr)
   ADD_DATA(buf, "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]");
   ADD_DATA(buf, "\x01\x02");
   tt_int_op(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, 1),
-            OP_EQ, -1);
+            OP_EQ, 1);
 
   tt_str_op("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", OP_EQ,
     socks->address);