Fix a bug where seting allow_annotations==0 only ignores annotations, but does not block them

This commit is contained in:
Nick Mathewson 2010-11-02 11:45:14 -04:00
parent bad609ae6b
commit 089137f011
2 changed files with 18 additions and 4 deletions

8
changes/annotations_fix Normal file
View File

@ -0,0 +1,8 @@
o Major bugfixes
- Do even more to reject (and not just ignore) annotations on
router descriptors received anywhere but from the cache.
Previously we would ignore such annotations at first, but cache
them to disk anyway. Bugfix on 0.2.0.8-alpha. Found by piebeer.

View File

@ -1177,10 +1177,16 @@ router_parse_entry_from_string(const char *s, const char *end,
s = cp+1;
}
if (allow_annotations && start_of_annotations != s) {
if (tokenize_string(area,start_of_annotations,s,tokens,
routerdesc_token_table,TS_NOCHECK)) {
log_warn(LD_DIR, "Error tokenizing router descriptor (annotations).");
if (start_of_annotations != s) { /* We have annotations */
if (allow_annotations) {
if (tokenize_string(area,start_of_annotations,s,tokens,
routerdesc_token_table,TS_NOCHECK)) {
log_warn(LD_DIR, "Error tokenizing router descriptor (annotations).");
goto err;
}
} else {
log_warn(LD_DIR, "Found unexpected annotations on router descriptor not "
"loaded from disk. Dropping it.");
goto err;
}
}