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

Side by Side Diff: net/cert/internal/verify_name_match.cc

Issue 1664243002: Using == instead of Equals for der::Input comparison. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing missing !=. Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "net/cert/internal/verify_name_match.h" 5 #include "net/cert/internal/verify_name_match.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 std::string a_normalized, b_normalized; 282 std::string a_normalized, b_normalized;
283 if (!NormalizeValue(a_tag, a_value, &a_normalized) || 283 if (!NormalizeValue(a_tag, a_value, &a_normalized) ||
284 !NormalizeValue(b_tag, b_value, &b_normalized)) 284 !NormalizeValue(b_tag, b_value, &b_normalized))
285 return false; 285 return false;
286 return a_normalized == b_normalized; 286 return a_normalized == b_normalized;
287 } 287 }
288 // Attributes encoded with different types may be assumed to be unequal. 288 // Attributes encoded with different types may be assumed to be unequal.
289 if (a_tag != b_tag) 289 if (a_tag != b_tag)
290 return false; 290 return false;
291 // All other types use binary comparison. 291 // All other types use binary comparison.
292 return a_value.Equals(b_value); 292 return a_value == b_value;
293 } 293 }
294 294
295 struct AttributeTypeAndValue { 295 struct AttributeTypeAndValue {
296 AttributeTypeAndValue(der::Input in_type, 296 AttributeTypeAndValue(der::Input in_type,
297 der::Tag in_value_tag, 297 der::Tag in_value_tag,
298 der::Input in_value) 298 der::Input in_value)
299 : type(in_type), value_tag(in_value_tag), value(in_value) {} 299 : type(in_type), value_tag(in_value_tag), value(in_value) {}
300 der::Input type; 300 der::Input type;
301 der::Tag value_tag; 301 der::Tag value_tag;
302 der::Input value; 302 der::Input value;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 374
375 // The ordering of elements may differ due to denormalized values sorting 375 // The ordering of elements may differ due to denormalized values sorting
376 // differently in the DER encoding. Since the number of elements should be 376 // differently in the DER encoding. Since the number of elements should be
377 // small, a naive linear search for each element should be fine. (Hostile 377 // small, a naive linear search for each element should be fine. (Hostile
378 // certificates already have ways to provoke pathological behavior.) 378 // certificates already have ways to provoke pathological behavior.)
379 for (const auto& a : a_type_and_values) { 379 for (const auto& a : a_type_and_values) {
380 std::vector<AttributeTypeAndValue>::iterator b_iter = 380 std::vector<AttributeTypeAndValue>::iterator b_iter =
381 b_type_and_values.begin(); 381 b_type_and_values.begin();
382 for (; b_iter != b_type_and_values.end(); ++b_iter) { 382 for (; b_iter != b_type_and_values.end(); ++b_iter) {
383 const auto& b = *b_iter; 383 const auto& b = *b_iter;
384 if (a.type.Equals(b.type) && 384 if (a.type == b.type &&
385 VerifyValueMatch(a.value_tag, a.value, b.value_tag, b.value)) { 385 VerifyValueMatch(a.value_tag, a.value, b.value_tag, b.value)) {
386 break; 386 break;
387 } 387 }
388 } 388 }
389 if (b_iter == b_type_and_values.end()) 389 if (b_iter == b_type_and_values.end())
390 return false; 390 return false;
391 // Remove the matched element from b_type_and_values to ensure duplicate 391 // Remove the matched element from b_type_and_values to ensure duplicate
392 // elements in a_type_and_values can't match the same element in 392 // elements in a_type_and_values can't match the same element in
393 // b_type_and_values multiple times. 393 // b_type_and_values multiple times.
394 b_type_and_values.erase(b_iter); 394 b_type_and_values.erase(b_iter);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 while (rdn_sequence_parser.HasMore()) { 485 while (rdn_sequence_parser.HasMore()) {
486 der::Parser rdn_parser; 486 der::Parser rdn_parser;
487 if (!rdn_sequence_parser.ReadConstructed(der::kSet, &rdn_parser)) 487 if (!rdn_sequence_parser.ReadConstructed(der::kSet, &rdn_parser))
488 return false; 488 return false;
489 489
490 std::vector<AttributeTypeAndValue> type_and_values; 490 std::vector<AttributeTypeAndValue> type_and_values;
491 if (!ReadRdn(&rdn_parser, &type_and_values)) 491 if (!ReadRdn(&rdn_parser, &type_and_values))
492 return false; 492 return false;
493 493
494 for (const auto& type_and_value : type_and_values) { 494 for (const auto& type_and_value : type_and_values) {
495 if (type_and_value.type.Equals(der::Input(kOidEmailAddress))) { 495 if (type_and_value.type == der::Input(kOidEmailAddress)) {
496 *contained_email_address = true; 496 *contained_email_address = true;
497 return true; 497 return true;
498 } 498 }
499 } 499 }
500 } 500 }
501 501
502 *contained_email_address = false; 502 *contained_email_address = false;
503 return true; 503 return true;
504 } 504 }
505 505
506 } // namespace net 506 } // namespace net
OLDNEW
« no previous file with comments | « net/cert/internal/verify_certificate_chain.cc ('k') | net/der/input.h » ('j') | net/der/input.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698