summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorjschuh@chromium.org <jschuh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-15 23:24:14 +0000
committerjschuh@chromium.org <jschuh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-15 23:24:14 +0000
commitb4f4fe4fa3ba2012d2ba309f51d89d86b3668f3a (patch)
tree8bacd9990db2c1c00d85c4aaf962e3bdc5558dc5 /content
parent52fe60de7f73d715c727271a2a7684e6f61b2b13 (diff)
downloadchromium_src-b4f4fe4fa3ba2012d2ba309f51d89d86b3668f3a.zip
chromium_src-b4f4fe4fa3ba2012d2ba309f51d89d86b3668f3a.tar.gz
chromium_src-b4f4fe4fa3ba2012d2ba309f51d89d86b3668f3a.tar.bz2
Make PrependWindowsSessionPath thread safe.
BUG=92858 TEST=None Review URL: http://codereview.chromium.org/7648035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96856 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/common/sandbox_policy.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/content/common/sandbox_policy.cc b/content/common/sandbox_policy.cc
index 8e3e2d9..c0fb940 100644
--- a/content/common/sandbox_policy.cc
+++ b/content/common/sandbox_policy.cc
@@ -198,22 +198,20 @@ void AddDllEvictionPolicy(sandbox::TargetPolicy* policy) {
// Returns the object path prepended with the current logon session.
string16 PrependWindowsSessionPath(const char16* object) {
// Cache this because it can't change after process creation.
- static string16* session_prefix = NULL;
- if (!session_prefix) {
+ uintptr_t s_session_id = 0;
+ if (s_session_id == 0) {
HANDLE token;
- DWORD session_id;
DWORD session_id_length;
+ DWORD session_id = 0;
CHECK(::OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &token));
CHECK(::GetTokenInformation(token, TokenSessionId, &session_id,
sizeof(session_id), &session_id_length));
CloseHandle(token);
-
- session_prefix = new string16(base::StringPrintf(L"\\Sessions\\%d",
- session_id));
+ s_session_id = session_id;
}
- return *session_prefix + object;
+ return base::StringPrintf(L"\\Sessions\\%d%ls", s_session_id, object);
}
// Closes handles that are opened at process creation and initialization.