diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-09-15 19:35:16 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-09-15 19:35:16 -0400 |
commit | 24c740e5fdfa1897b2e8de045d11c419d1e0b5d4 (patch) | |
tree | 9b2acca7570d56c11ff0580192e13b7a1f5b0c7f | |
parent | 113ba0e7270147b6eed10668970e1719139c4f27 (diff) | |
parent | b792afa91901abaa04417051d1369fa8e643d90d (diff) | |
download | tor-24c740e5fdfa1897b2e8de045d11c419d1e0b5d4.tar.gz tor-24c740e5fdfa1897b2e8de045d11c419d1e0b5d4.zip |
Merge commit 'sebastian/memleak' into maint-0.2.1
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/or/routerparse.c | 8 |
2 files changed, 11 insertions, 0 deletions
@@ -6,6 +6,9 @@ Changes in version 0.2.1.20 - 2009-??-?? patch. Bugfix on the 54th commit on Tor -- from July 2002, before the release of Tor 0.0.0. This is the new winner of the oldest-bug prize. + - Fix a remotely triggerable memory leak when a consensus document + contains more than one signature from the same voter. Bugfix on + 0.2.0.3-alpha. o New directory authorities: - Set up urras (run by Jacob Appelbaum) as the seventh v3 directory diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 97dd20f4e3..189458ee1e 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -2509,6 +2509,14 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } else { if (tok->object_size >= INT_MAX) goto err; + /* We already parsed a vote from this voter. Use the first one. */ + if (v->signature) { + log_fn(LOG_PROTOCOL_WARN, LD_DIR, "We received a networkstatus " + "that contains two votes from the same voter. Ignoring " + "the second vote."); + continue; + } + v->signature = tor_memdup(tok->object_body, tok->object_size); v->signature_len = (int) tok->object_size; } |