From: Nick Mathewson Date: Tue, 4 Sep 2018 23:23:55 +0000 (-0400) Subject: Fix a pair of remaining leaks in tortls_nss.c X-Git-Tag: tor-0.3.5.1-alpha~92^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c50537fd9462af45f0a53aa4f0d5ca03a08fc41e;p=thirdparty%2Ftor.git Fix a pair of remaining leaks in tortls_nss.c Fun fact: PR_Close leaks memory if its socket is not valid. --- diff --git a/src/lib/tls/tortls_nss.c b/src/lib/tls/tortls_nss.c index 548a817e63..8e6c0d2d77 100644 --- a/src/lib/tls/tortls_nss.c +++ b/src/lib/tls/tortls_nss.c @@ -361,7 +361,13 @@ tor_tls_new(tor_socket_t sock, int is_server) (void)sock; tor_tls_context_t *ctx = tor_tls_context_get(is_server); - PRFileDesc *tcp = PR_ImportTCPSocket(sock); + PRFileDesc *tcp = NULL; + if (SOCKET_OK(sock)) { + tcp = PR_ImportTCPSocket(sock); + } else { + tcp = PR_NewTCPSocket(); + } + if (!tcp) return NULL; diff --git a/src/test/test_router.c b/src/test/test_router.c index c6a2452c8c..14e739d6fc 100644 --- a/src/test/test_router.c +++ b/src/test/test_router.c @@ -52,6 +52,8 @@ NS(router_get_my_routerinfo)(void) mock_routerinfo->onion_pkey = crypto_pk_dup_key(tap_key); mock_routerinfo->bandwidthrate = 9001; mock_routerinfo->bandwidthburst = 9002; + crypto_pk_free(ident_key); + crypto_pk_free(tap_key); } return mock_routerinfo;