Merge branch 'tor-github/pr/1083'

This commit is contained in:
David Goulet 2019-06-11 11:43:15 -04:00
commit e9d99d2e15
5 changed files with 28 additions and 18 deletions

3
changes/bug30780 Normal file
View File

@ -0,0 +1,3 @@
o Minor bugfixes (directory authorities):
- Return a distinct status when formatting annotations fails.
Fixes bug 30780; bugfix on 0.2.0.8-alpha.

View File

@ -216,7 +216,7 @@ problem function-size /src/feature/nodelist/node_select.c:router_pick_directory_
problem function-size /src/feature/nodelist/node_select.c:compute_weighted_bandwidths() 206
problem function-size /src/feature/nodelist/node_select.c:router_pick_trusteddirserver_impl() 114
problem function-size /src/feature/nodelist/nodelist.c:compute_frac_paths_available() 193
problem file-size /src/feature/nodelist/routerlist.c 3238
problem file-size /src/feature/nodelist/routerlist.c 3239
problem function-size /src/feature/nodelist/routerlist.c:router_rebuild_store() 148
problem function-size /src/feature/nodelist/routerlist.c:router_add_to_routerlist() 169
problem function-size /src/feature/nodelist/routerlist.c:routerlist_remove_old_routers() 121

View File

@ -216,9 +216,14 @@ dirserv_load_fingerprint_file(void)
#define DISABLE_DISABLING_ED25519
/** Check whether <b>router</b> has a nickname/identity key combination that
* we recognize from the fingerprint list, or an IP we automatically act on
* according to our configuration. Return the appropriate router status.
/** Check whether <b>router</b> has:
* - a nickname/identity key combination that we recognize from the fingerprint
* list,
* - an IP we automatically act on according to our configuration,
* - an appropriate version, and
* - matching pinned keys.
*
* Return the appropriate router status.
*
* If the status is 'FP_REJECT' and <b>msg</b> is provided, set
* *<b>msg</b> to an explanation of why. */
@ -236,7 +241,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
return FP_REJECT;
}
/* Check for the more usual versions to reject a router first. */
/* Check for the more common reasons to reject a router first. */
const uint32_t r = dirserv_get_status_impl(d, router->nickname,
router->addr, router->or_port,
router->platform, msg, severity);
@ -551,9 +556,7 @@ dirserv_add_multiple_descriptors(const char *desc, size_t desclen,
!general ? router_purpose_to_string(purpose) : "",
!general ? "\n" : "")<0) {
*msg = "Couldn't format annotations";
/* XXX Not cool: we return -1 below, but (was_router_added_t)-1 is
* ROUTER_BAD_EI, which isn't what's gone wrong here. :( */
return -1;
return ROUTER_AUTHDIR_BUG_ANNOTATIONS;
}
s = desc;

View File

@ -1459,12 +1459,13 @@ router_descriptor_is_older_than,(const routerinfo_t *router, int seconds))
}
/** Add <b>router</b> to the routerlist, if we don't already have it. Replace
* older entries (if any) with the same key. Note: Callers should not hold
* their pointers to <b>router</b> if this function fails; <b>router</b>
* will either be inserted into the routerlist or freed. Similarly, even
* if this call succeeds, they should not hold their pointers to
* <b>router</b> after subsequent calls with other routerinfo's -- they
* might cause the original routerinfo to get freed.
* older entries (if any) with the same key.
*
* Note: Callers should not hold their pointers to <b>router</b> if this
* function fails; <b>router</b> will either be inserted into the routerlist or
* freed. Similarly, even if this call succeeds, they should not hold their
* pointers to <b>router</b> after subsequent calls with other routerinfo's --
* they might cause the original routerinfo to get freed.
*
* Returns the status for the operation. Might set *<b>msg</b> if it wants
* the poster of the router to know something.

View File

@ -37,9 +37,12 @@ typedef enum was_router_added_t {
ROUTER_WAS_NOT_WANTED = -6,
/* Router descriptor was rejected because it was older than
* OLD_ROUTER_DESC_MAX_AGE. */
ROUTER_WAS_TOO_OLD = -7, /* note contrast with 'NOT_NEW' */
/* DOCDOC */
ROUTER_CERTS_EXPIRED = -8
ROUTER_WAS_TOO_OLD = -7, /* note contrast with 'ROUTER_IS_ALREADY_KNOWN' */
/* Some certs on this router are expired. */
ROUTER_CERTS_EXPIRED = -8,
/* We couldn't format the annotations for this router. This is a directory
* authority bug. */
ROUTER_AUTHDIR_BUG_ANNOTATIONS = -10
} was_router_added_t;
/** How long do we avoid using a directory server after it's given us a 503? */