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

Unified Diff: chrome_elf/chrome_elf_util_unittest.cc

Issue 2408923002: [M54 Merge] NTRegistry - added wow64 redirection support. (Closed)
Patch Set: Created 4 years, 2 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 | « chrome_elf/blacklist/test/blacklist_test_main_dll.cc ('k') | chrome_elf/nt_registry/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_elf/chrome_elf_util_unittest.cc
diff --git a/chrome_elf/chrome_elf_util_unittest.cc b/chrome_elf/chrome_elf_util_unittest.cc
index ad4671a5efe3913c49197780833621dfb4c37f88..f24bde7b66d425f89f4c0ff3fbd50a9462fe971c 100644
--- a/chrome_elf/chrome_elf_util_unittest.cc
+++ b/chrome_elf/chrome_elf_util_unittest.cc
@@ -72,17 +72,25 @@ bool IsSecuritySet() {
}
void RegRedirect(nt::ROOT_KEY key,
- registry_util::RegistryOverrideManager& rom) {
+ registry_util::RegistryOverrideManager* rom) {
+ ASSERT_NE(key, nt::AUTO);
base::string16 temp;
if (key == nt::HKCU) {
- rom.OverrideRegistry(HKEY_CURRENT_USER, &temp);
- ::wcsncpy(nt::HKCU_override, temp.c_str(), nt::g_kRegMaxPathLen - 1);
- } else if (key == nt::HKLM) {
- rom.OverrideRegistry(HKEY_LOCAL_MACHINE, &temp);
- ::wcsncpy(nt::HKLM_override, temp.c_str(), nt::g_kRegMaxPathLen - 1);
+ rom->OverrideRegistry(HKEY_CURRENT_USER, &temp);
+ ASSERT_TRUE(nt::SetTestingOverride(nt::HKCU, temp));
+ } else {
+ rom->OverrideRegistry(HKEY_LOCAL_MACHINE, &temp);
+ ASSERT_TRUE(nt::SetTestingOverride(nt::HKLM, temp));
}
- // nt::AUTO should not be passed into this function.
+}
+
+void CancelRegRedirect(nt::ROOT_KEY key) {
+ ASSERT_NE(key, nt::AUTO);
+ if (key == nt::HKCU)
+ ASSERT_TRUE(nt::SetTestingOverride(nt::HKCU, base::string16()));
+ else
+ ASSERT_TRUE(nt::SetTestingOverride(nt::HKLM, base::string16()));
}
TEST(ChromeElfUtilTest, CanaryTest) {
@@ -108,7 +116,7 @@ TEST(ChromeElfUtilTest, BrowserProcessSecurityTest) {
// Set up registry override for this test.
registry_util::RegistryOverrideManager override_manager;
- RegRedirect(nt::HKCU, override_manager);
+ RegRedirect(nt::HKCU, &override_manager);
// First, ensure that the emergency-off finch signal works.
EXPECT_TRUE(SetSecurityFinchFlag(true));
@@ -119,112 +127,8 @@ TEST(ChromeElfUtilTest, BrowserProcessSecurityTest) {
// Second, test that the process mitigation is set when no finch signal.
EarlyBrowserSecurity();
EXPECT_TRUE(IsSecuritySet());
-}
-
-//------------------------------------------------------------------------------
-// NT registry API tests (chrome_elf_reg)
-//------------------------------------------------------------------------------
-
-TEST(ChromeElfUtilTest, NTRegistry) {
- HANDLE key_handle;
- const wchar_t* dword_val_name = L"DwordTestValue";
- DWORD dword_val = 1234;
- const wchar_t* sz_val_name = L"SzTestValue";
- base::string16 sz_val = L"blah de blah de blahhhhh.";
- const wchar_t* sz_val_name2 = L"SzTestValueEmpty";
- base::string16 sz_val2 = L"";
- const wchar_t* multisz_val_name = L"SzmultiTestValue";
- std::vector<base::string16> multisz_val;
- base::string16 multi1 = L"one";
- base::string16 multi2 = L"two";
- base::string16 multi3 = L"three";
- const wchar_t* multisz_val_name2 = L"SzmultiTestValueBad";
- base::string16 multi_empty = L"";
- const wchar_t* sz_new_key_1 = L"test\\new\\subkey";
- const wchar_t* sz_new_key_2 = L"test\\new\\subkey\\blah\\";
- const wchar_t* sz_new_key_3 = L"\\test\\new\\subkey\\\\blah2";
-
- // Set up registry override for this test.
- registry_util::RegistryOverrideManager override_manager;
- RegRedirect(nt::HKCU, override_manager);
-
- // Create a temp key to play under.
- ASSERT_TRUE(nt::CreateRegKey(nt::HKCU, elf_sec::kRegSecurityPath,
- KEY_ALL_ACCESS, &key_handle));
-
- // Exercise the supported getter & setter functions.
- EXPECT_TRUE(nt::SetRegValueDWORD(key_handle, dword_val_name, dword_val));
- EXPECT_TRUE(nt::SetRegValueSZ(key_handle, sz_val_name, sz_val));
- EXPECT_TRUE(nt::SetRegValueSZ(key_handle, sz_val_name2, sz_val2));
-
- DWORD get_dword = 0;
- base::string16 get_sz;
- EXPECT_TRUE(nt::QueryRegValueDWORD(key_handle, dword_val_name, &get_dword) &&
- get_dword == dword_val);
- EXPECT_TRUE(nt::QueryRegValueSZ(key_handle, sz_val_name, &get_sz) &&
- get_sz.compare(sz_val) == 0);
- EXPECT_TRUE(nt::QueryRegValueSZ(key_handle, sz_val_name2, &get_sz) &&
- get_sz.compare(sz_val2) == 0);
-
- multisz_val.push_back(multi1);
- multisz_val.push_back(multi2);
- multisz_val.push_back(multi3);
- EXPECT_TRUE(
- nt::SetRegValueMULTISZ(key_handle, multisz_val_name, multisz_val));
- multisz_val.clear();
- multisz_val.push_back(multi_empty);
- EXPECT_TRUE(
- nt::SetRegValueMULTISZ(key_handle, multisz_val_name2, multisz_val));
- multisz_val.clear();
-
- EXPECT_TRUE(
- nt::QueryRegValueMULTISZ(key_handle, multisz_val_name, &multisz_val));
- if (multisz_val.size() == 3) {
- EXPECT_TRUE(multi1.compare(multisz_val.at(0)) == 0);
- EXPECT_TRUE(multi2.compare(multisz_val.at(1)) == 0);
- EXPECT_TRUE(multi3.compare(multisz_val.at(2)) == 0);
- } else {
- EXPECT_TRUE(false);
- }
- multisz_val.clear();
- EXPECT_TRUE(
- nt::QueryRegValueMULTISZ(key_handle, multisz_val_name2, &multisz_val));
- if (multisz_val.size() == 1) {
- EXPECT_TRUE(multi_empty.compare(multisz_val.at(0)) == 0);
- } else {
- EXPECT_TRUE(false);
- }
- multisz_val.clear();
-
- // Clean up
- EXPECT_TRUE(nt::DeleteRegKey(key_handle));
- nt::CloseRegKey(key_handle);
-
- // More tests for CreateRegKey recursion.
- ASSERT_TRUE(
- nt::CreateRegKey(nt::HKCU, sz_new_key_1, KEY_ALL_ACCESS, nullptr));
- EXPECT_TRUE(nt::OpenRegKey(nt::HKCU, sz_new_key_1, KEY_ALL_ACCESS,
- &key_handle, nullptr));
- EXPECT_TRUE(nt::DeleteRegKey(key_handle));
- nt::CloseRegKey(key_handle);
-
- ASSERT_TRUE(
- nt::CreateRegKey(nt::HKCU, sz_new_key_2, KEY_ALL_ACCESS, nullptr));
- EXPECT_TRUE(nt::OpenRegKey(nt::HKCU, sz_new_key_2, KEY_ALL_ACCESS,
- &key_handle, nullptr));
- EXPECT_TRUE(nt::DeleteRegKey(key_handle));
- nt::CloseRegKey(key_handle);
-
- ASSERT_TRUE(
- nt::CreateRegKey(nt::HKCU, sz_new_key_3, KEY_ALL_ACCESS, nullptr));
- EXPECT_TRUE(nt::OpenRegKey(nt::HKCU, L"test\\new\\subkey\\blah2",
- KEY_ALL_ACCESS, &key_handle, nullptr));
- EXPECT_TRUE(nt::DeleteRegKey(key_handle));
- nt::CloseRegKey(key_handle);
-
- ASSERT_TRUE(nt::CreateRegKey(nt::HKCU, nullptr, KEY_ALL_ACCESS, &key_handle));
- nt::CloseRegKey(key_handle);
+ CancelRegRedirect(nt::HKCU);
}
// Parameterized test with paramters:
@@ -237,8 +141,8 @@ class ChromeElfUtilTest
protected:
void SetUp() override {
// Set up registry override for these tests.
- RegRedirect(nt::HKLM, override_manager_);
- RegRedirect(nt::HKCU, override_manager_);
+ RegRedirect(nt::HKLM, &override_manager_);
+ RegRedirect(nt::HKCU, &override_manager_);
const char* app;
const char* level;
@@ -263,6 +167,11 @@ class ChromeElfUtilTest
}
}
+ void TearDown() override {
+ CancelRegRedirect(nt::HKCU);
+ CancelRegRedirect(nt::HKLM);
+ }
+
base::string16 BuildKey(const wchar_t* path, const wchar_t* guid) {
base::string16 full_key_path(path);
full_key_path.append(1, L'\\');
« no previous file with comments | « chrome_elf/blacklist/test/blacklist_test_main_dll.cc ('k') | chrome_elf/nt_registry/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698