aboutsummaryrefslogtreecommitdiff
path: root/src/or/control.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/control.c
parent2d3f21e9ee5d173640b83b21913da692e74ede10 (diff)
downloadtor-7e65871ccc49f6f25f8782789283cf2afef6e86b.tar
tor-7e65871ccc49f6f25f8782789283cf2afef6e86b.tar.gz
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/control.c')
-rw-r--r--src/or/control.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/or/control.c b/src/or/control.c
index be1e921f3..13a5f46b1 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1755,10 +1755,10 @@ getinfo_helper_events(control_connection_t *control_conn,
"information", question);
}
} else if (!strcmp(question, "status/clients-seen")) {
- char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL));
+ const char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL));
if (!bridge_stats)
return -1;
- *answer = bridge_stats;
+ *answer = tor_strdup(bridge_stats);
} else {
return 0;
}