From f7a66767251bdbb0e727b636d8abb036c1a043b5 Mon Sep 17 00:00:00 2001 From: james Date: Wed, 4 Jun 2008 07:23:20 +0000 Subject: Fixed unbounded memory growth bug in environmental variable code that could have caused long-running OpenVPN sessions with many TLS renegotiations to incrementally increase memory usage over time. git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@2981 e7ae566f-a301-0410-adde-c780ea21d3b5 --- debug/valgrind-suppress | 14 ++++++++++++++ doval | 2 +- openvpn.c | 4 +++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/debug/valgrind-suppress b/debug/valgrind-suppress index 69e2a3f..612c45e 100644 --- a/debug/valgrind-suppress +++ b/debug/valgrind-suppress @@ -114,3 +114,17 @@ Memcheck:Cond obj:/lib/ld-2.5.so } + +{ + + Memcheck:Leak + fun:malloc + fun:CRYPTO_malloc + fun:sk_new + obj:/usr/lib/libssl.so.0.9.8 + fun:SSL_COMP_get_compression_methods + fun:SSL_library_init + fun:init_ssl_lib + fun:init_static + fun:main +} diff --git a/doval b/doval index 76e0811..af840ee 100755 --- a/doval +++ b/doval @@ -1,2 +1,2 @@ #!/bin/bash -valgrind --tool=memcheck --error-limit=no --suppressions=debug/valgrind-suppress --gen-suppressions=all --leak-check=yes --num-callers=32 $* +valgrind --tool=memcheck --error-limit=no --suppressions=debug/valgrind-suppress --gen-suppressions=all --leak-check=full --show-reachable=yes --num-callers=32 $* diff --git a/openvpn.c b/openvpn.c index d3c36f9..f1bf169 100644 --- a/openvpn.c +++ b/openvpn.c @@ -130,7 +130,7 @@ main (int argc, char *argv[]) gc_init (&c.gc); /* initialize environmental variable store */ - c.es = env_set_create (&c.gc); + c.es = env_set_create (NULL); #ifdef ENABLE_MANAGEMENT /* initialize management subsystem */ @@ -233,6 +233,8 @@ main (int argc, char *argv[]) context_gc_free (&c); + env_set_destroy (c.es); + #ifdef ENABLE_MANAGEMENT /* close management interface */ close_management (); -- cgit v1.2.3