Index: components/policy/core/common/schema_map.cc |
diff --git a/components/policy/core/common/schema_map.cc b/components/policy/core/common/schema_map.cc |
index 488af8d0f5168ee62cf973a4c00c11a6f89b9fd8..4d64fdeba632bc928308ccac218d301475d347a4 100644 |
--- a/components/policy/core/common/schema_map.cc |
+++ b/components/policy/core/common/schema_map.cc |
@@ -4,6 +4,7 @@ |
#include "components/policy/core/common/schema_map.h" |
+#include "base/logging.h" |
#include "base/values.h" |
#include "components/policy/core/common/policy_bundle.h" |
#include "components/policy/core/common/policy_map.h" |
@@ -63,8 +64,14 @@ void SchemaMap::FilterBundle(PolicyBundle* bundle) const { |
const base::Value* policy_value = it_map->second.value; |
Schema policy_schema = schema->GetProperty(policy_name); |
++it_map; |
- if (!policy_value || !policy_schema.Validate(*policy_value)) |
+ std::string error; |
+ if (!policy_value || |
+ !policy_schema.Validate(*policy_value, SCHEMA_STRICT, &error)) { |
+ LOG(ERROR) << "Dropping policy " << policy_name << " for " |
+ << it->first.component_id |
+ << " because it's not valid: " << error; |
map->Erase(policy_name); |
+ } |
} |
} |
} |