From 38cbfda119558877aeb4fa81578f0d0f6962d03e Mon Sep 17 00:00:00 2001 From: rl1987 Date: Wed, 8 Apr 2020 19:54:47 +0300 Subject: Actually, bail out of routerstatus_format_entry() if fmt_addr32() fails --- src/feature/nodelist/fmt_routerstatus.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/feature/nodelist/fmt_routerstatus.c b/src/feature/nodelist/fmt_routerstatus.c index 6cecbf4df8..ca4a312639 100644 --- a/src/feature/nodelist/fmt_routerstatus.c +++ b/src/feature/nodelist/fmt_routerstatus.c @@ -54,22 +54,23 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version, smartlist_t *chunks = smartlist_new(); const char *ip_str = fmt_addr32(rs->addr); + if (ip_str[0] == '\0') + goto err; format_iso_time(published, rs->published_on); digest_to_base64(identity64, rs->identity_digest); digest_to_base64(digest64, rs->descriptor_digest); - if (ip_str[0]) - smartlist_add_asprintf(chunks, - "r %s %s %s%s%s %s %d %d\n", - rs->nickname, - identity64, - (format==NS_V3_CONSENSUS_MICRODESC)?"":digest64, - (format==NS_V3_CONSENSUS_MICRODESC)?"":" ", - published, - ip_str, - (int)rs->or_port, - (int)rs->dir_port); + smartlist_add_asprintf(chunks, + "r %s %s %s%s%s %s %d %d\n", + rs->nickname, + identity64, + (format==NS_V3_CONSENSUS_MICRODESC)?"":digest64, + (format==NS_V3_CONSENSUS_MICRODESC)?"":" ", + published, + ip_str, + (int)rs->or_port, + (int)rs->dir_port); /* TODO: Maybe we want to pass in what we need to build the rest of * this here, instead of in the caller. Then we could use the -- cgit v1.2.3-54-g00ecf