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

Side by Side Diff: chromeos/network/onc/onc_validator.cc

Issue 11428078: Rejecting networks/certificates individually from ONC during validation. (Closed) Base URL: http://git.chromium.org/chromium/src.git@add_error_handling_to_validator
Patch Set: Addressed Mattias' comments. Created 8 years 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
« no previous file with comments | « chromeos/network/onc/onc_validator.h ('k') | chromeos/network/onc/onc_validator_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 + "Field name '" + field_name + "' is unknown."; 170 + "Field name '" + field_name + "' is unknown.";
171 if (error_on_unknown_field_) 171 if (error_on_unknown_field_)
172 LOG(ERROR) << message; 172 LOG(ERROR) << message;
173 else 173 else
174 LOG(WARNING) << message; 174 LOG(WARNING) << message;
175 } 175 }
176 176
177 return result.Pass(); 177 return result.Pass();
178 } 178 }
179 179
180 scoped_ptr<base::ListValue> Validator::MapArray(
181 const OncValueSignature& array_signature,
182 const base::ListValue& onc_array,
183 bool* nested_error) {
184 bool nested_error_in_current_array = false;
185 scoped_ptr<base::ListValue> result = Mapper::MapArray(
186 array_signature, onc_array, &nested_error_in_current_array);
187
188 // Drop individual networks and certificates instead of rejecting all of
189 // the configuration.
190 if (nested_error_in_current_array &&
191 &array_signature != &kNetworkConfigurationListSignature &&
192 &array_signature != &kCertificateListSignature) {
193 *nested_error = nested_error_in_current_array;
stevenjb 2012/12/14 01:06:36 It seems odd that nested_error is only sometimes s
pneubeck (no reviews) 2012/12/14 18:55:46 That's currently the behavior of all other methods
stevenjb 2012/12/14 20:21:40 OK, as long as the comment is clear that's fine.
194 }
195 return result.Pass();
196 }
197
180 scoped_ptr<base::Value> Validator::MapEntry(int index, 198 scoped_ptr<base::Value> Validator::MapEntry(int index,
181 const OncValueSignature& signature, 199 const OncValueSignature& signature,
182 const base::Value& onc_value, 200 const base::Value& onc_value,
183 bool* error) { 201 bool* error) {
184 std::string str = base::IntToString(index); 202 std::string str = base::IntToString(index);
185 path_.push_back(str); 203 path_.push_back(str);
186 scoped_ptr<base::Value> result = Mapper::MapEntry(index, signature, 204 scoped_ptr<base::Value> result = Mapper::MapEntry(index, signature,
187 onc_value, error); 205 onc_value, error);
188 DCHECK_EQ(str, path_.back()); 206 DCHECK_EQ(str, path_.back());
189 path_.pop_back(); 207 path_.pop_back();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 &recommended_value)) { 240 &recommended_value)) {
223 return true; 241 return true;
224 } 242 }
225 base::ListValue* recommended_list; 243 base::ListValue* recommended_list;
226 recommended_value->GetAsList(&recommended_list); 244 recommended_value->GetAsList(&recommended_list);
227 CHECK(recommended_list != NULL); 245 CHECK(recommended_list != NULL);
228 246
229 recommended.reset(recommended_list); 247 recommended.reset(recommended_list);
230 248
231 if (!managed_onc_) { 249 if (!managed_onc_) {
250 error_or_warning_found_ = true;
232 LOG(WARNING) << WarningHeader() << "Found the field '" << onc::kRecommended 251 LOG(WARNING) << WarningHeader() << "Found the field '" << onc::kRecommended
233 << "' in an unmanaged ONC. Removing it."; 252 << "' in an unmanaged ONC. Removing it.";
234 return true; 253 return true;
235 } 254 }
236 255
237 scoped_ptr<base::ListValue> repaired_recommended(new base::ListValue); 256 scoped_ptr<base::ListValue> repaired_recommended(new base::ListValue);
238 for (base::ListValue::iterator it = recommended->begin(); 257 for (base::ListValue::iterator it = recommended->begin();
239 it != recommended->end(); ++it) { 258 it != recommended->end(); ++it) {
240 std::string field_name; 259 std::string field_name;
241 if (!(*it)->GetAsString(&field_name)) { 260 if (!(*it)->GetAsString(&field_name)) {
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 } 721 }
703 722
704 std::string Validator::MessageHeader(bool is_error) { 723 std::string Validator::MessageHeader(bool is_error) {
705 std::string path = path_.empty() ? "toplevel" : JoinString(path_, "."); 724 std::string path = path_.empty() ? "toplevel" : JoinString(path_, ".");
706 std::string message = "At " + path + ": "; 725 std::string message = "At " + path + ": ";
707 return message; 726 return message;
708 } 727 }
709 728
710 } // namespace onc 729 } // namespace onc
711 } // namespace chromeos 730 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/onc/onc_validator.h ('k') | chromeos/network/onc/onc_validator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698