From: Nick Mathewson Date: Tue, 30 Dec 2014 17:07:28 +0000 (-0500) Subject: Coalesce v0 and v1 fields of rend_intro_cell_t X-Git-Tag: tor-0.2.6.2-alpha~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac632a784cdeecaef81e5f1fe45a20f43a93aea7;p=thirdparty%2Ftor.git Coalesce v0 and v1 fields of rend_intro_cell_t This saves a tiny bit of code, and makes a longstanding coverity false positive go away. --- diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 196145e210..d4fbe739fe 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1527,8 +1527,7 @@ find_rp_for_intro(const rend_intro_cell_t *intro, } if (intro->version == 0 || intro->version == 1) { - if (intro->version == 1) rp_nickname = (const char *)(intro->u.v1.rp); - else rp_nickname = (const char *)(intro->u.v0.rp); + rp_nickname = (const char *)(intro->u.v0_v1.rp); node = node_get_by_nickname(rp_nickname, 0); if (!node) { @@ -1777,11 +1776,7 @@ rend_service_parse_intro_for_v0_or_v1( goto err; } - if (intro->version == 1) { - memcpy(intro->u.v1.rp, rp_nickname, endptr - rp_nickname + 1); - } else { - memcpy(intro->u.v0.rp, rp_nickname, endptr - rp_nickname + 1); - } + memcpy(intro->u.v0_v1.rp, rp_nickname, endptr - rp_nickname + 1); return ver_specific_len; diff --git a/src/or/rendservice.h b/src/or/rendservice.h index c2342ef573..05502cac5d 100644 --- a/src/or/rendservice.h +++ b/src/or/rendservice.h @@ -37,14 +37,10 @@ struct rend_intro_cell_s { uint8_t version; /* Version-specific parts */ union { - struct { - /* Rendezvous point nickname */ - uint8_t rp[20]; - } v0; struct { /* Rendezvous point nickname or hex-encoded key digest */ uint8_t rp[42]; - } v1; + } v0_v1; struct { /* The extend_info_t struct has everything v2 uses */ extend_info_t *extend_info;