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

Unified Diff: chromeos/network/onc/onc_validator.cc

Issue 166903002: Identify and repair ONC files with duplicate GUIDs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Issue_23567011
Patch Set: Created 6 years, 10 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
Index: chromeos/network/onc/onc_validator.cc
diff --git a/chromeos/network/onc/onc_validator.cc b/chromeos/network/onc/onc_validator.cc
index 675539041d4300d0e5299e922f9d028671e6c8bd..06ab6dd8ee967a9272885a7747297b2692227dd5 100644
--- a/chromeos/network/onc/onc_validator.cc
+++ b/chromeos/network/onc/onc_validator.cc
@@ -387,6 +387,20 @@ bool Validator::RequireField(const base::DictionaryValue& dict,
return false;
}
+bool Validator::VerifyGuidUniqueAndAddToHash(const base::DictionaryValue& dict,
+ const std::string& key_guid,
+ std::set<std::string> *guids) {
+ std::string guid;
+ if (dict.GetStringWithoutPathExpansion(key_guid, &guid)) {
+ if (guids->count(guid) != 0) {
+ error_or_warning_found_ = true;
pneubeck (no reviews) 2014/02/17 10:11:36 Log an error (it's always an error and not a warni
kaliamoorthi 2014/02/17 15:06:49 Done.
+ return false;
+ }
+ guids->insert(guid);
+ }
+ return true;
+}
+
bool Validator::IsCertPatternInDevicePolicy(const std::string& cert_type) {
if (cert_type == ::onc::certificate::kPattern &&
onc_source_ == ::onc::ONC_SOURCE_DEVICE_POLICY) {
@@ -458,6 +472,9 @@ bool Validator::ValidateNetworkConfiguration(base::DictionaryValue* result) {
return false;
}
+ if (!VerifyGuidUniqueAndAddToHash(*result, kGUID, &network_guids_))
+ return false;
+
bool all_required_exist = RequireField(*result, kGUID);
bool remove = false;
@@ -812,6 +829,9 @@ bool Validator::ValidateCertificate(base::DictionaryValue* result) {
return false;
}
+ if (!VerifyGuidUniqueAndAddToHash(*result, kGUID, &certificate_guids_))
+ return false;
+
bool all_required_exist = RequireField(*result, kGUID);
bool remove = false;

Powered by Google App Engine
This is Rietveld 408576698