]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Don't explode on NULL or empty string
authorrl1987 <rl1987@sdf.lonestar.org>
Wed, 21 Feb 2018 19:23:21 +0000 (20:23 +0100)
committerNick Mathewson <nickm@torproject.org>
Wed, 28 Mar 2018 11:39:03 +0000 (07:39 -0400)
src/common/util.c
src/test/test_util.c

index 1402462fb049e458d092bba79fbe24d51627668b..53e117f24c5524e69d4df4d9fca18888688c426b 100644 (file)
@@ -1081,8 +1081,13 @@ string_is_valid_dest(const char *string)
   int retval;
   size_t len = strlen(string);
 
-  tor_assert(string);
-  tor_assert(len > 0);
+  if (string == NULL)
+    return 0;
+
+  len = strlen(string);
+
+  if (len == 0)
+    return 0;
 
   if (string[0] == '[' && string[len - 1] == ']')
     string = tmp = tor_strndup(string + 1, len - 2);
index ee9b16494c681a2b27b4571f500c37ef5e689a1d..c734426a5aa1b34402eb736add012fa6ddaaea67 100644 (file)
@@ -5541,6 +5541,18 @@ test_util_max_mem(void *arg)
   ;
 }
 
+static void
+test_util_dest_validation_edgecase(void *arg)
+{
+  (void)arg;
+
+  tt_assert(!string_is_valid_dest(NULL));
+  tt_assert(!string_is_valid_dest(""));
+
+  done:
+  return;
+}
+
 static void
 test_util_hostname_validation(void *arg)
 {
@@ -6222,6 +6234,7 @@ struct testcase_t util_tests[] = {
     &passthrough_setup, (void*)"1" },
   UTIL_TEST(max_mem, 0),
   UTIL_TEST(hostname_validation, 0),
+  UTIL_TEST(dest_validation_edgecase, 0),
   UTIL_TEST(ipv4_validation, 0),
   UTIL_TEST(writepid, 0),
   UTIL_TEST(get_avail_disk_space, 0),