]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a pair of remaining leaks in tortls_nss.c
authorNick Mathewson <nickm@torproject.org>
Tue, 4 Sep 2018 23:23:55 +0000 (19:23 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 4 Sep 2018 23:45:21 +0000 (19:45 -0400)
Fun fact: PR_Close leaks memory if its socket is not valid.

src/lib/tls/tortls_nss.c
src/test/test_router.c

index 548a817e63442b23ba97852e7f2d2368fad3a129..8e6c0d2d77ab6f29e6854316c6cc69e9d96507b5 100644 (file)
@@ -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;
 
index c6a2452c8c65b91255c8ee723a4f2a0c3a57b760..14e739d6fc3a5e22d655b227c26f6b384eec3afe 100644 (file)
@@ -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;