From 701fce8e5cf875e42491207e6861da795908fbf5 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sun, 22 Jul 2007 22:49:49 +0000 Subject: [PATCH] r13858@catbus: nickm | 2007-07-22 18:44:02 -0400 Fix/note some relatively trivial mem usage issues svn:r10905 --- src/common/torgzip.c | 4 ++++ src/or/circuitbuild.c | 3 ++- src/or/main.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/torgzip.c b/src/common/torgzip.c index 5a1e1e8a0b..f1771c183c 100644 --- a/src/common/torgzip.c +++ b/src/common/torgzip.c @@ -136,6 +136,10 @@ tor_gzip_compress(char **out, size_t *out_len, } done: *out_len = stream->total_out; + if (stream->total_out > out_size + 4097) { + /* If we're wasting more than 4k, don't. */ + tor_realloc(*out, stream->total_out + 1); + } if (deflateEnd(stream)!=Z_OK) { log_warn(LD_BUG, "Error freeing gzip structures"); goto err; diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 5cf90bd585..8f2e4ed747 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1072,7 +1072,8 @@ circuit_get_unhandled_ports(time_t now) int i; for (i = 0; i < smartlist_len(source); ++i) { - tmp = tor_malloc(sizeof(uint16_t)); + /*XXXX020 some of these are leaked somewhere.. fix that. */ + tmp = tor_malloc(sizeof(uint16_t)); memcpy(tmp, smartlist_get(source, i), sizeof(uint16_t)); smartlist_add(dest, tmp); } diff --git a/src/or/main.c b/src/or/main.c index a41b8cb17f..085d3044e0 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1763,6 +1763,7 @@ tor_free_all(int postfork) routerlist_free_all(); addressmap_free_all(); set_exit_redirects(NULL); /* free the registered exit redirects */ + esc_router_info(NULL); /* free a static field */ dirserv_free_all(); rend_service_free_all(); rend_cache_free_all();