OLD | NEW |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 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 "components/policy/core/common/policy_loader_win.h" | 5 #include "components/policy/core/common/policy_loader_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <lm.h> // For limits. | 8 #include <lm.h> // For limits. |
9 #include <ntdsapi.h> // For Ds[Un]Bind | 9 #include <ntdsapi.h> // For Ds[Un]Bind |
10 #include <rpc.h> // For struct GUID | 10 #include <rpc.h> // For struct GUID |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 141 |
142 int invalid_policies = 0; | 142 int invalid_policies = 0; |
143 const PolicyMap::Entry* map_entry = | 143 const PolicyMap::Entry* map_entry = |
144 policy->Get(key::kExtensionInstallForcelist); | 144 policy->Get(key::kExtensionInstallForcelist); |
145 if (map_entry && map_entry->value) { | 145 if (map_entry && map_entry->value) { |
146 const base::ListValue* policy_list_value = NULL; | 146 const base::ListValue* policy_list_value = NULL; |
147 if (!map_entry->value->GetAsList(&policy_list_value)) | 147 if (!map_entry->value->GetAsList(&policy_list_value)) |
148 return; | 148 return; |
149 | 149 |
150 std::unique_ptr<base::ListValue> filtered_values(new base::ListValue); | 150 std::unique_ptr<base::ListValue> filtered_values(new base::ListValue); |
151 for (base::ListValue::const_iterator list_entry(policy_list_value->begin()); | 151 for (const auto& list_entry : *policy_list_value) { |
152 list_entry != policy_list_value->end(); ++list_entry) { | |
153 std::string entry; | 152 std::string entry; |
154 if (!(*list_entry)->GetAsString(&entry)) | 153 if (!list_entry->GetAsString(&entry)) |
155 continue; | 154 continue; |
156 size_t pos = entry.find(';'); | 155 size_t pos = entry.find(';'); |
157 if (pos == std::string::npos) | 156 if (pos == std::string::npos) |
158 continue; | 157 continue; |
159 // Only allow custom update urls in enterprise environments. | 158 // Only allow custom update urls in enterprise environments. |
160 if (!base::LowerCaseEqualsASCII(entry.substr(pos), | 159 if (!base::LowerCaseEqualsASCII(entry.substr(pos), |
161 kExpectedWebStoreUrl)) { | 160 kExpectedWebStoreUrl)) { |
162 entry = kBlockedExtensionPrefix + entry; | 161 entry = kBlockedExtensionPrefix + entry; |
163 invalid_policies++; | 162 invalid_policies++; |
164 } | 163 } |
165 | 164 |
166 filtered_values->AppendString(entry); | 165 filtered_values->AppendString(entry); |
167 } | 166 } |
168 if (invalid_policies) { | 167 if (invalid_policies) { |
169 policy->Set(key::kExtensionInstallForcelist, | 168 Entry filtered_entry = map_entry->DeepCopy(); |
170 map_entry->level, map_entry->scope, map_entry->source, | 169 filtered_entry.value = std::move(filtered_values); |
171 filtered_values.release(), | 170 policy->Set(key::kExtensionInstallForcelist, std::move(filtered_entry)); |
172 map_entry->external_data_fetcher); | |
173 | 171 |
174 const PolicyDetails* details = GetChromePolicyDetails( | 172 const PolicyDetails* details = GetChromePolicyDetails( |
175 key::kExtensionInstallForcelist); | 173 key::kExtensionInstallForcelist); |
176 UMA_HISTOGRAM_SPARSE_SLOWLY("EnterpriseCheck.InvalidPolicies", | 174 UMA_HISTOGRAM_SPARSE_SLOWLY("EnterpriseCheck.InvalidPolicies", |
177 details->id); | 175 details->id); |
178 } | 176 } |
179 } | 177 } |
180 | 178 |
181 for (size_t i = 0; i < arraysize(kInsecurePolicies); ++i) { | 179 for (size_t i = 0; i < arraysize(kInsecurePolicies); ++i) { |
182 if (policy->Get(kInsecurePolicies[i])) { | 180 if (policy->Get(kInsecurePolicies[i])) { |
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 | 681 |
684 void PolicyLoaderWin::OnObjectSignaled(HANDLE object) { | 682 void PolicyLoaderWin::OnObjectSignaled(HANDLE object) { |
685 DCHECK(object == user_policy_changed_event_.handle() || | 683 DCHECK(object == user_policy_changed_event_.handle() || |
686 object == machine_policy_changed_event_.handle()) | 684 object == machine_policy_changed_event_.handle()) |
687 << "unexpected object signaled policy reload, obj = " | 685 << "unexpected object signaled policy reload, obj = " |
688 << std::showbase << std::hex << object; | 686 << std::showbase << std::hex << object; |
689 Reload(false); | 687 Reload(false); |
690 } | 688 } |
691 | 689 |
692 } // namespace policy | 690 } // namespace policy |
OLD | NEW |