diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-12-10 15:50:04 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-12-10 15:50:04 +0000 |
commit | 3e9e1639d73e028ac40664ce6c85e0ed788bb924 (patch) | |
tree | ea2ecad8349b9bd4b6c868f71a0cda0d3ccfbcde | |
parent | da1a18d327692fdc2021581579e85ee28c7c60cb (diff) | |
download | tor-3e9e1639d73e028ac40664ce6c85e0ed788bb924.tar.gz tor-3e9e1639d73e028ac40664ce6c85e0ed788bb924.zip |
Backport karsten's bug 885 fix.
svn:r17558
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/or/routerlist.c | 11 |
2 files changed, 13 insertions, 3 deletions
@@ -10,11 +10,16 @@ Changes in version 0.2.0.33 - 200?-??-?? - Correct handling of possible malformed authority signing key certificates with internal signature types. Fixes bug 880. Bugfix on 0.2.0.3-alpha. + - Fix a hard-to-trigger resource leak when logging credential status. + CID 349. o Minor features: - Report the case where all signatures in a detached set are rejected differently than the case where there is an error handling the detached set. + - When we realize that another process has modified our cached + descriptors, print out a more useful error message rather than + triggering an assertion. Fixes bug 885. Patch from Karsten. Changes in version 0.2.0.32 - 2008-11-20 diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 5a43019cb8..19b8b14b15 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2084,6 +2084,11 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc, if (store && store->mmap) { tor_assert(desc->saved_offset + len <= store->mmap->size); r = store->mmap->data + offset; + } else if (store) { + log_err(LD_DIR, "We couldn't read a descriptor that is supposedly " + "mmaped in our cache. Is another process running in our data " + "directory? Exiting."); + exit(1); } } if (!r) /* no mmap, or not in cache. */ @@ -2094,11 +2099,11 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc, if (!with_annotations) { if (memcmp("router ", r, 7) && memcmp("extra-info ", r, 11)) { char *cp = tor_strndup(r, 64); - log_err(LD_DIR, "descriptor at %p begins with unexpected string %s", + log_err(LD_DIR, "descriptor at %p begins with unexpected string %s. " + "Is another process running in our data directory? Exiting.", desc, escaped(cp)); - tor_free(cp); + exit(1); } - tor_assert(!memcmp("router ", r, 7) || !memcmp("extra-info ", r, 11)); } return r; |