]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Clear socks auth fields before free
authorNick Mathewson <nickm@torproject.org>
Fri, 5 Aug 2011 23:07:33 +0000 (19:07 -0400)
committerNick Mathewson <nickm@torproject.org>
Fri, 5 Aug 2011 23:07:33 +0000 (19:07 -0400)
src/or/buffers.c
src/or/circuitlist.c
src/or/connection_edge.c

index 5b9e55ebd5840907e65d30855c4fc69cfdb7ef27..488289c06df5863261058cee567a7e27521c7193 100644 (file)
@@ -1532,8 +1532,14 @@ socks_request_free(socks_request_t *req)
 {
   if (!req)
     return;
-  tor_free(req->username);
-  tor_free(req->password);
+  if (req->username) {
+    memset(req->username, 0x10, req->usernamelen);
+    tor_free(req->username);
+  }
+  if (req->password) {
+    memset(req->password, 0x04, req->passwordlen);
+    tor_free(req->password);
+  }
   memset(req, 0xCC, sizeof(socks_request_t));
   tor_free(req);
 }
index 48c5afc7d059f223839ffe2e1545b03b1e204af7..2222a25af015f8ca979183a12be80f5e54dd528d 100644 (file)
@@ -552,8 +552,14 @@ circuit_free(circuit_t *circ)
     rend_data_free(ocirc->rend_data);
 
     tor_free(ocirc->dest_address);
-    tor_free(ocirc->socks_username);
-    tor_free(ocirc->socks_password);
+    if (ocirc->socks_username) {
+      memset(ocirc->socks_username, 0x12, ocirc->socks_username_len);
+      tor_free(ocirc->socks_username);
+    }
+    if (ocirc->socks_password) {
+      memset(ocirc->socks_password, 0x06, ocirc->socks_password_len);
+      tor_free(ocirc->socks_password);
+    }
   } else {
     or_circuit_t *ocirc = TO_OR_CIRCUIT(circ);
     /* Remember cell statistics for this circuit before deallocating. */
index 83102bac5192b2a732f2efa715a95d5efc717f40..ae2dfd2e3a46d6c5223cdcefb8ce68e1dca04caf 100644 (file)
@@ -3569,8 +3569,14 @@ circuit_clear_isolation(origin_circuit_t *circ)
   tor_free(circ->dest_address);
   circ->session_group = -1;
   circ->nym_epoch = 0;
-  tor_free(circ->socks_username);
-  tor_free(circ->socks_password);
+  if (circ->socks_username) {
+    memset(circ->socks_username, 0x11, circ->socks_username_len);
+    tor_free(circ->socks_username);
+  }
+  if (circ->socks_password) {
+    memset(circ->socks_password, 0x05, circ->socks_password_len);
+    tor_free(circ->socks_password);
+  }
   circ->socks_username_len = circ->socks_password_len = 0;
 }