[tbb-commits] [tor-browser/tor-browser-45.0.2esr-6.x-1] Bug 18800: Remove localhost DNS lookup in nsProfileLock.cpp

gk at torproject.org gk at torproject.org
Thu Apr 21 18:38:17 UTC 2016


commit 1afada0068a11265f291b8c836854391f532e754
Author: Kathy Brade <brade at pearlcrescent.com>
Date:   Thu Apr 21 10:40:26 2016 -0400

    Bug 18800: Remove localhost DNS lookup in nsProfileLock.cpp
    
    Instead of using the local computer's IP address within
    symlink-based profile lock signatures, always use 127.0.0.1.
---
 toolkit/profile/nsProfileLock.cpp | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/toolkit/profile/nsProfileLock.cpp b/toolkit/profile/nsProfileLock.cpp
index 9b26087..d71816d 100644
--- a/toolkit/profile/nsProfileLock.cpp
+++ b/toolkit/profile/nsProfileLock.cpp
@@ -344,20 +344,16 @@ nsresult nsProfileLock::LockWithSymlink(nsIFile *aLockFile, bool aHaveFcntlLock)
     if (!mReplacedLockTime)
         aLockFile->GetLastModifiedTimeOfLink(&mReplacedLockTime);
 
+    // For Tor Browser, avoid a DNS lookup here so the Tor network is not
+    // bypassed. Instead, always use 127.0.0.1 for the IP address portion
+    // of the lock signature, which may cause the browser to refuse to
+    // start in the rare event that all of the following conditions are met:
+    //   1. The browser profile is on a network file system.
+    //   2. The file system does not support fcntl() locking.
+    //   3. Tor Browser is run from two different computers at the same time.
     struct in_addr inaddr;
     inaddr.s_addr = htonl(INADDR_LOOPBACK);
 
-    char hostname[256];
-    PRStatus status = PR_GetSystemInfo(PR_SI_HOSTNAME, hostname, sizeof hostname);
-    if (status == PR_SUCCESS)
-    {
-        char netdbbuf[PR_NETDB_BUF_SIZE];
-        PRHostEnt hostent;
-        status = PR_GetHostByName(hostname, netdbbuf, sizeof netdbbuf, &hostent);
-        if (status == PR_SUCCESS)
-            memcpy(&inaddr, hostent.h_addr, sizeof inaddr);
-    }
-
     char *signature =
         PR_smprintf("%s:%s%lu", inet_ntoa(inaddr), aHaveFcntlLock ? "+" : "",
                     (unsigned long)getpid());



More information about the tbb-commits mailing list