summaryrefslogtreecommitdiff
path: root/src/or/microdesc.c
diff options
context:
space:
mode:
authorKarsten Loesing <karsten.loesing@gmx.net>2010-01-25 18:44:17 +0000
committerSebastian Hahn <sebastian@torproject.org>2010-01-26 11:55:43 +0100
commit7e65871ccc49f6f25f8782789283cf2afef6e86b (patch)
treec306dda2137e8799a29fb6f2ddd018c30e4f3157 /src/or/microdesc.c
parent2d3f21e9ee5d173640b83b21913da692e74ede10 (diff)
downloadtor-7e65871ccc49f6f25f8782789283cf2afef6e86b.tar.gz
tor-7e65871ccc49f6f25f8782789283cf2afef6e86b.zip
Fix a memory corruption bug while collecting bridge stats
We accidentally freed the internal buffer for bridge stats when we were writing the bridge stats file or honoring a control port request for said data. Change the interfaces for geoip_get_bridge_stats* to prevent these problems, and remove the offending free/add a tor_strdup. Fixes bug 1208.
Diffstat (limited to 'src/or/microdesc.c')
-rw-r--r--src/or/microdesc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/or/microdesc.c b/src/or/microdesc.c
index a754200764..f29611f930 100644
--- a/src/or/microdesc.c
+++ b/src/or/microdesc.c
@@ -77,7 +77,8 @@ dump_microdescriptor(FILE *f, microdesc_t *md, size_t *annotation_len_out)
md->off = (off_t) ftell(f);
written = fwrite(md->body, 1, md->bodylen, f);
if (written != md->bodylen) {
- log_warn(LD_DIR, "Couldn't dump microdescriptor (wrote %lu out of %lu): %s",
+ log_warn(LD_DIR,
+ "Couldn't dump microdescriptor (wrote %lu out of %lu): %s",
(unsigned long)written, (unsigned long)md->bodylen,
strerror(ferror(f)));
return -1;