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

Side by Side Diff: chrome_elf/chrome_elf_security.cc

Issue 2507263002: Make nt_registry Create/OpenRegKey return a scoped object
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome_elf/chrome_elf_security.h" 5 #include "chrome_elf/chrome_elf_security.h"
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <windows.h> 8 #include <windows.h>
9 #include <versionhelpers.h> // windows.h must be before 9 #include <versionhelpers.h> // windows.h must be before
10 10
11 #include "chrome_elf/chrome_elf_constants.h" 11 #include "chrome_elf/chrome_elf_constants.h"
12 #include "chrome_elf/nt_registry/nt_registry.h" 12 #include "chrome_elf/nt_registry/nt_registry.h"
13 13
14 namespace elf_security { 14 namespace elf_security {
15 15
16 void EarlyBrowserSecurity() { 16 void EarlyBrowserSecurity() {
17 typedef decltype(SetProcessMitigationPolicy)* SetProcessMitigationPolicyFunc; 17 typedef decltype(SetProcessMitigationPolicy)* SetProcessMitigationPolicyFunc;
18 18
19 // This function is called from within DllMain. 19 // This function is called from within DllMain.
20 // Don't do anything naughty while we have the loader lock. 20 // Don't do anything naughty while we have the loader lock.
21 NTSTATUS ret_val = STATUS_SUCCESS; 21 NTSTATUS ret_val = STATUS_SUCCESS;
22 HANDLE handle = INVALID_HANDLE_VALUE;
23 22
24 // Check for kRegistrySecurityFinchPath. If it exists, 23 // Check for kRegistrySecurityFinchPath. If it exists,
25 // we do NOT disable extension points. (Emergency off flag.) 24 // we do NOT disable extension points. (Emergency off flag.)
26 if (nt::OpenRegKey(nt::HKCU, elf_sec::kRegSecurityFinchPath, KEY_QUERY_VALUE, 25 if (nt::OpenRegKey(nt::HKCU, elf_sec::kRegSecurityFinchPath, KEY_QUERY_VALUE,
27 &handle, &ret_val)) { 26 &ret_val)
28 nt::CloseRegKey(handle); 27 .is_valid()) {
29 return; 28 return;
30 } 29 }
31 #ifdef _DEBUG 30 #ifdef _DEBUG
32 // The only failure expected is for the path not existing. 31 // The only failure expected is for the path not existing.
33 if (ret_val != STATUS_OBJECT_NAME_NOT_FOUND) 32 if (ret_val != STATUS_OBJECT_NAME_NOT_FOUND)
34 assert(false); 33 assert(false);
35 #endif 34 #endif
36 35
37 if (::IsWindows8OrGreater()) { 36 if (::IsWindows8OrGreater()) {
38 SetProcessMitigationPolicyFunc set_process_mitigation_policy = 37 SetProcessMitigationPolicyFunc set_process_mitigation_policy =
39 reinterpret_cast<SetProcessMitigationPolicyFunc>(::GetProcAddress( 38 reinterpret_cast<SetProcessMitigationPolicyFunc>(::GetProcAddress(
40 ::GetModuleHandleW(L"kernel32.dll"), "SetProcessMitigationPolicy")); 39 ::GetModuleHandleW(L"kernel32.dll"), "SetProcessMitigationPolicy"));
41 if (set_process_mitigation_policy) { 40 if (set_process_mitigation_policy) {
42 // Disable extension points in this process. 41 // Disable extension points in this process.
43 // (Legacy hooking.) 42 // (Legacy hooking.)
44 PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY policy = {}; 43 PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY policy = {};
45 policy.DisableExtensionPoints = true; 44 policy.DisableExtensionPoints = true;
46 set_process_mitigation_policy(ProcessExtensionPointDisablePolicy, &policy, 45 set_process_mitigation_policy(ProcessExtensionPointDisablePolicy, &policy,
47 sizeof(policy)); 46 sizeof(policy));
48 } 47 }
49 } 48 }
50 return; 49 return;
51 } 50 }
52 } // namespace elf_security 51 } // namespace elf_security
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698