OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chromeos/network/onc/onc_validator.h" | 5 #include "chromeos/network/onc/onc_validator.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 const char* const kValidCertTypes[] = {kRef, kPattern}; | 294 const char* const kValidCertTypes[] = {kRef, kPattern}; |
295 std::vector<const char*> valid_cert_types(toVector(kValidCertTypes)); | 295 std::vector<const char*> valid_cert_types(toVector(kValidCertTypes)); |
296 if (allow_cert_type_none) | 296 if (allow_cert_type_none) |
297 valid_cert_types.push_back(kClientCertTypeNone); | 297 valid_cert_types.push_back(kClientCertTypeNone); |
298 if (FieldExistsAndHasNoValidValue(*result, kClientCertType, valid_cert_types)) | 298 if (FieldExistsAndHasNoValidValue(*result, kClientCertType, valid_cert_types)) |
299 return false; | 299 return false; |
300 | 300 |
301 std::string cert_type; | 301 std::string cert_type; |
302 result->GetStringWithoutPathExpansion(kClientCertType, &cert_type); | 302 result->GetStringWithoutPathExpansion(kClientCertType, &cert_type); |
303 | 303 |
304 if (IsCertPatternInDevicePolicy(cert_type)) | |
305 return false; | |
306 | |
307 bool all_required_exist = true; | 304 bool all_required_exist = true; |
308 | 305 |
309 if (cert_type == kPattern) | 306 if (cert_type == kPattern) |
310 all_required_exist &= RequireField(*result, kClientCertPattern); | 307 all_required_exist &= RequireField(*result, kClientCertPattern); |
311 else if (cert_type == kRef) | 308 else if (cert_type == kRef) |
312 all_required_exist &= RequireField(*result, kClientCertRef); | 309 all_required_exist &= RequireField(*result, kClientCertRef); |
313 | 310 |
314 return !error_on_missing_field_ || all_required_exist; | 311 return !error_on_missing_field_ || all_required_exist; |
315 } | 312 } |
316 | 313 |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 if (guids->count(guid) != 0) { | 498 if (guids->count(guid) != 0) { |
502 error_or_warning_found_ = true; | 499 error_or_warning_found_ = true; |
503 LOG(ERROR) << MessageHeader() << "Found a duplicate GUID " << guid << "."; | 500 LOG(ERROR) << MessageHeader() << "Found a duplicate GUID " << guid << "."; |
504 return false; | 501 return false; |
505 } | 502 } |
506 guids->insert(guid); | 503 guids->insert(guid); |
507 } | 504 } |
508 return true; | 505 return true; |
509 } | 506 } |
510 | 507 |
511 bool Validator::IsCertPatternInDevicePolicy(const std::string& cert_type) { | |
512 if (cert_type == ::onc::client_cert::kPattern && | |
513 onc_source_ == ::onc::ONC_SOURCE_DEVICE_POLICY) { | |
514 error_or_warning_found_ = true; | |
515 LOG(ERROR) << MessageHeader() << "Client certificate patterns are " | |
516 << "prohibited in ONC device policies."; | |
517 return true; | |
518 } | |
519 return false; | |
520 } | |
521 | |
522 bool Validator::IsGlobalNetworkConfigInUserImport( | 508 bool Validator::IsGlobalNetworkConfigInUserImport( |
523 const base::DictionaryValue& onc_object) { | 509 const base::DictionaryValue& onc_object) { |
524 if (onc_source_ == ::onc::ONC_SOURCE_USER_IMPORT && | 510 if (onc_source_ == ::onc::ONC_SOURCE_USER_IMPORT && |
525 onc_object.HasKey(::onc::toplevel_config::kGlobalNetworkConfiguration)) { | 511 onc_object.HasKey(::onc::toplevel_config::kGlobalNetworkConfiguration)) { |
526 error_or_warning_found_ = true; | 512 error_or_warning_found_ = true; |
527 LOG(ERROR) << MessageHeader() << "GlobalNetworkConfiguration is prohibited " | 513 LOG(ERROR) << MessageHeader() << "GlobalNetworkConfiguration is prohibited " |
528 << "in ONC user imports"; | 514 << "in ONC user imports"; |
529 return true; | 515 return true; |
530 } | 516 } |
531 return false; | 517 return false; |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1053 } | 1039 } |
1054 | 1040 |
1055 std::string Validator::MessageHeader() { | 1041 std::string Validator::MessageHeader() { |
1056 std::string path = path_.empty() ? "toplevel" : base::JoinString(path_, "."); | 1042 std::string path = path_.empty() ? "toplevel" : base::JoinString(path_, "."); |
1057 std::string message = "At " + path + ": "; | 1043 std::string message = "At " + path + ": "; |
1058 return message; | 1044 return message; |
1059 } | 1045 } |
1060 | 1046 |
1061 } // namespace onc | 1047 } // namespace onc |
1062 } // namespace chromeos | 1048 } // namespace chromeos |
OLD | NEW |