commit 6b6d003f43cbbf01b40cedb0cc12ada2e81461f9
Author: rl1987 <rl1987(a)sdf.lonestar.org>
Date: Wed Feb 21 20:23:21 2018 +0100
Don't explode on NULL or empty string
---
src/common/util.c | 9 +++++++--
src/test/test_util.c | 13 +++++++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/common/util.c b/src/common/util.c
index 1402462fb..53e117f24 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -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);
diff --git a/src/test/test_util.c b/src/test/test_util.c
index ee9b16494..c734426a5 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -5542,6 +5542,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)
{
(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),