summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-02-07 22:34:08 -0500
committerNick Mathewson <nickm@torproject.org>2010-02-07 22:34:08 -0500
commit080e8f50f87fb7c0c099b1341173fa05c82a42e8 (patch)
tree2a9b6b13dbe2053618d6af25653e2b4a164ffe0a
parentc10c7c9d839490dc71b576c1ebb1c645ed34131e (diff)
parentdfee17328950628686bf2c78a8983871f36d97cf (diff)
downloadtor-080e8f50f87fb7c0c099b1341173fa05c82a42e8.tar.gz
tor-080e8f50f87fb7c0c099b1341173fa05c82a42e8.zip
Merge commit 'origin/maint-0.2.1'
-rw-r--r--ChangeLog7
-rw-r--r--src/or/rendclient.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 053ea660b4..339402b926 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,13 @@ Changes in version 0.2.1.23 - 2010-0?-??
automatically discard guards picked using the old algorithm. Fixes
bug 1217; bugfix on 0.2.1.3-alpha. Found by Mike Perry.
+ o Major bugfixes:
+ - Fix a potential buffer overflow in lookup_last_hid_serv_request()
+ that could happen on 32-bit platforms with 64-bit time_t. Also fix
+ a memory leak when requesting a hidden service descriptor we've
+ requested before. Fixes bug 1242, bugfix on 0.2.0.18-alpha. Found
+ by aakova.
+
o Minor bugfixes:
- When deciding whether to use strange flags to turn TLS renegotiation
on, detect the OpenSSL version at run-time, not compile time. We
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index cce8437472..cbdb9a676c 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -332,9 +332,12 @@ lookup_last_hid_serv_request(routerstatus_t *hs_dir,
tor_snprintf(hsdir_desc_comb_id, sizeof(hsdir_desc_comb_id), "%s%s",
hsdir_id_base32, desc_id_base32);
if (set) {
- last_request_ptr = tor_malloc_zero(sizeof(time_t *));
+ time_t *oldptr;
+ last_request_ptr = tor_malloc_zero(sizeof(time_t));
*last_request_ptr = now;
- strmap_set(last_hid_serv_requests, hsdir_desc_comb_id, last_request_ptr);
+ oldptr = strmap_set(last_hid_serv_requests, hsdir_desc_comb_id,
+ last_request_ptr);
+ tor_free(oldptr);
} else
last_request_ptr = strmap_get_lc(last_hid_serv_requests,
hsdir_desc_comb_id);