Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(923)

Unified Diff: sandbox/src/service_resolver_unittest.cc

Issue 10021033: Sandbox: Add support for interceptions on Windows 8. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/src/service_resolver_32.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/src/service_resolver_unittest.cc
===================================================================
--- sandbox/src/service_resolver_unittest.cc (revision 132453)
+++ sandbox/src/service_resolver_unittest.cc (working copy)
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -55,9 +55,14 @@
DISALLOW_COPY_AND_ASSIGN(ResolverThunkTest);
};
+typedef ResolverThunkTest<sandbox::ServiceResolverThunk> WinXpResolverTest;
+
+#if !defined(_WIN64)
typedef ResolverThunkTest<sandbox::Win2kResolverThunk> Win2kResolverTest;
-typedef ResolverThunkTest<sandbox::ServiceResolverThunk> WinXpResolverTest;
+typedef ResolverThunkTest<sandbox::Win8ResolverThunk> Win8ResolverTest;
typedef ResolverThunkTest<sandbox::Wow64ResolverThunk> Wow64ResolverTest;
+typedef ResolverThunkTest<sandbox::Wow64W8ResolverThunk> Wow64W8ResolverTest;
+#endif
const BYTE kJump32 = 0xE9;
@@ -70,12 +75,16 @@
};
#pragma pack(pop)
+#if defined(_WIN64)
+ FAIL() << "Running 32-bit codepath";
+#else
Code* patched = reinterpret_cast<Code*>(source);
EXPECT_EQ(kJump32, patched->jump);
ULONG source_addr = bit_cast<ULONG>(source);
ULONG target_addr = bit_cast<ULONG>(target);
EXPECT_EQ(target_addr + 19 - source_addr, patched->delta);
+#endif
}
NTSTATUS PatchNtdllWithResolver(const char* function, bool relaxed,
@@ -120,12 +129,24 @@
}
sandbox::ServiceResolverThunk* GetTestResolver(bool relaxed) {
- if (base::win::OSInfo::GetInstance()->wow64_status() ==
- base::win::OSInfo::WOW64_ENABLED)
+#if defined(_WIN64)
+ return new WinXpResolverTest(relaxed);
+#else
+ base::win::OSInfo* os_info = base::win::OSInfo::GetInstance();
+ if (os_info->wow64_status() == base::win::OSInfo::WOW64_ENABLED) {
+ if (os_info->version() >= base::win::VERSION_WIN8)
+ return new Wow64W8ResolverTest(relaxed);
return new Wow64ResolverTest(relaxed);
+ }
+
if (!sandbox::IsXPSP2OrLater())
return new Win2kResolverTest(relaxed);
+
+ if (os_info->version() >= base::win::VERSION_WIN8)
+ return new Win8ResolverTest(relaxed);
+
return new WinXpResolverTest(relaxed);
+#endif
}
NTSTATUS PatchNtdll(const char* function, bool relaxed) {
« no previous file with comments | « sandbox/src/service_resolver_32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698