Skip to content
Snippets Groups Projects
Commit 6e17cef8 authored by Kathleen Brade's avatar Kathleen Brade Committed by Georg Koppen
Browse files

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.
parent 04be6d9e
Branches
Tags
No related merge requests found
......@@ -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());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment