From 6454469b26dda43c881a3d2783a9d4a236ce7609 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 10 Jan 2019 13:12:34 -0600 Subject: [PATCH] msg/msg_types: entity_addr_t: fix empty string parse cases Signed-off-by: Sage Weil --- src/msg/msg_types.cc | 5 +++++ src/test/test_addrs.cc | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/msg/msg_types.cc b/src/msg/msg_types.cc index bc63047604f..c39e4e404fa 100644 --- a/src/msg/msg_types.cc +++ b/src/msg/msg_types.cc @@ -67,6 +67,9 @@ bool entity_addr_t::parse(const char *s, const char **end, int default_type) *this = entity_addr_t(); const char *start = s; + if (end) { + *end = s; + } int newtype; if (strncmp("v1:", s, 3) == 0) { @@ -229,6 +232,8 @@ bool entity_addrvec_t::parse(const char *s, const char **end) const char *static_end; if (!end) { end = &static_end; + } else { + *end = s; } v.clear(); while (*s) { diff --git a/src/test/test_addrs.cc b/src/test/test_addrs.cc index 155f8eb4bf1..0b68f6f4022 100644 --- a/src/test/test_addrs.cc +++ b/src/test/test_addrs.cc @@ -26,10 +26,10 @@ const char *addr_checks[][3] = { { "127.0.0.1 foo", "v2:127.0.0.1:0/0", " foo" }, { "127.0.0.1:1234 foo", "v2:127.0.0.1:1234/0", " foo" }, { "127.0.0.1:1234/5678 foo", "v2:127.0.0.1:1234/5678", " foo" }, - { "1.2.3:4 a", "", "" }, + { "1.2.3:4 a", "", "1.2.3:4 a" }, { "2607:f298:4:2243::5522", "v2:[2607:f298:4:2243::5522]:0/0", "" }, { "[2607:f298:4:2243::5522]", "v2:[2607:f298:4:2243::5522]:0/0", "" }, - { "2607:f298:4:2243::5522a", "", "" }, + { "2607:f298:4:2243::5522a", "", "2607:f298:4:2243::5522a" }, { "[2607:f298:4:2243::5522]a", "v2:[2607:f298:4:2243::5522]:0/0", "a" }, { "[2607:f298:4:2243::5522]:1234a", "v2:[2607:f298:4:2243::5522]:1234/0", "a" }, { "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "v2:[2001:db8:85a3::8a2e:370:7334]:0/0", "" }, -- 2.39.5