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

Side by Side Diff: net/cert/internal/certificate_policies.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 comment. 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
« no previous file with comments | « net/cert/asn1_util.cc ('k') | net/cert/internal/extended_key_usage_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 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 <algorithm> 5 #include <algorithm>
6 6
7 #include "net/cert/internal/certificate_policies.h" 7 #include "net/cert/internal/certificate_policies.h"
8 8
9 #include "net/der/input.h" 9 #include "net/der/input.h"
10 #include "net/der/parser.h" 10 #include "net/der/parser.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 if (!policy_qualifiers_sequence_parser->ReadSequence( 49 if (!policy_qualifiers_sequence_parser->ReadSequence(
50 &policy_information_parser)) { 50 &policy_information_parser)) {
51 return false; 51 return false;
52 } 52 }
53 der::Input qualifier_oid; 53 der::Input qualifier_oid;
54 if (!policy_information_parser.ReadTag(der::kOid, &qualifier_oid)) 54 if (!policy_information_parser.ReadTag(der::kOid, &qualifier_oid))
55 return false; 55 return false;
56 // RFC 5280 section 4.2.1.4: When qualifiers are used with the special 56 // RFC 5280 section 4.2.1.4: When qualifiers are used with the special
57 // policy anyPolicy, they MUST be limited to the qualifiers identified in 57 // policy anyPolicy, they MUST be limited to the qualifiers identified in
58 // this section. 58 // this section.
59 if (policy_oid.Equals(AnyPolicy()) && 59 if (policy_oid == AnyPolicy() && qualifier_oid != CpsPointerId() &&
60 !qualifier_oid.Equals(CpsPointerId()) && 60 qualifier_oid != UserNoticeId()) {
61 !qualifier_oid.Equals(UserNoticeId())) {
62 return false; 61 return false;
63 } 62 }
64 der::Tag tag; 63 der::Tag tag;
65 der::Input value; 64 der::Input value;
66 if (!policy_information_parser.ReadTagAndValue(&tag, &value)) 65 if (!policy_information_parser.ReadTagAndValue(&tag, &value))
67 return false; 66 return false;
68 // Should not have trailing data after qualifier. 67 // Should not have trailing data after qualifier.
69 if (policy_information_parser.HasMore()) 68 if (policy_information_parser.HasMore())
70 return false; 69 return false;
71 } 70 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 if (!policy_information_parser.ReadTag(der::kOid, &policy_oid)) 144 if (!policy_information_parser.ReadTag(der::kOid, &policy_oid))
146 return false; 145 return false;
147 146
148 // Build the |policies| vector in sorted order (sorted on DER encoded policy 147 // Build the |policies| vector in sorted order (sorted on DER encoded policy
149 // OID). Use a binary search to check whether a duplicate policy is present, 148 // OID). Use a binary search to check whether a duplicate policy is present,
150 // and if not, where to insert the policy to maintain the sorted order. 149 // and if not, where to insert the policy to maintain the sorted order.
151 std::vector<der::Input>::iterator i = 150 std::vector<der::Input>::iterator i =
152 std::lower_bound(policies->begin(), policies->end(), policy_oid); 151 std::lower_bound(policies->begin(), policies->end(), policy_oid);
153 // RFC 5280 section 4.2.1.4: A certificate policy OID MUST NOT appear more 152 // RFC 5280 section 4.2.1.4: A certificate policy OID MUST NOT appear more
154 // than once in a certificate policies extension. 153 // than once in a certificate policies extension.
155 if (i != policies->end() && i->Equals(policy_oid)) 154 if (i != policies->end() && *i == policy_oid)
156 return false; 155 return false;
157 156
158 policies->insert(i, policy_oid); 157 policies->insert(i, policy_oid);
159 158
160 if (!policy_information_parser.HasMore()) 159 if (!policy_information_parser.HasMore())
161 continue; 160 continue;
162 161
163 der::Parser policy_qualifiers_sequence_parser; 162 der::Parser policy_qualifiers_sequence_parser;
164 if (!policy_information_parser.ReadSequence( 163 if (!policy_information_parser.ReadSequence(
165 &policy_qualifiers_sequence_parser)) { 164 &policy_qualifiers_sequence_parser)) {
166 return false; 165 return false;
167 } 166 }
168 // Should not have trailing data after policyQualifiers sequence. 167 // Should not have trailing data after policyQualifiers sequence.
169 if (policy_information_parser.HasMore()) 168 if (policy_information_parser.HasMore())
170 return false; 169 return false;
171 if (!ParsePolicyQualifiers(policy_oid, &policy_qualifiers_sequence_parser)) 170 if (!ParsePolicyQualifiers(policy_oid, &policy_qualifiers_sequence_parser))
172 return false; 171 return false;
173 } 172 }
174 173
175 return true; 174 return true;
176 } 175 }
177 176
178 } // namespace net 177 } // namespace net
OLDNEW
« no previous file with comments | « net/cert/asn1_util.cc ('k') | net/cert/internal/extended_key_usage_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698