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

Side by Side Diff: nss/lib/util/quickder.c

Issue 1504923011: Update NSS to 3.21 RTM and NSPR to 4.11 RTM (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/nss
Patch Set: Created 5 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 | Annotate | Revision Log
OLDNEW
1 /* This Source Code Form is subject to the terms of the Mozilla Public 1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 4
5 /* 5 /*
6 Optimized ASN.1 DER decoder 6 Optimized ASN.1 DER decoder
7 7
8 */ 8 */
9 9
10 #include "secerr.h" 10 #include "secerr.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 return SECSuccess; 139 return SECSuccess;
140 } 140 }
141 141
142 dest->data = definite_length_decoder(src->data, src->len, &dest->len, 142 dest->data = definite_length_decoder(src->data, src->len, &dest->len,
143 includeTag); 143 includeTag);
144 if (dest->data == NULL) 144 if (dest->data == NULL)
145 { 145 {
146 PORT_SetError(SEC_ERROR_BAD_DER); 146 PORT_SetError(SEC_ERROR_BAD_DER);
147 return SECFailure; 147 return SECFailure;
148 } 148 }
149 src->len -= (dest->data - src->data) + dest->len; 149 src->len -= (int)(dest->data - src->data) + dest->len;
150 src->data = dest->data + dest->len; 150 src->data = dest->data + dest->len;
151 return SECSuccess; 151 return SECSuccess;
152 } 152 }
153 153
154 /* check if the actual component's type matches the type in the template */ 154 /* check if the actual component's type matches the type in the template */
155 155
156 static SECStatus MatchComponentType(const SEC_ASN1Template* templateEntry, 156 static SECStatus MatchComponentType(const SEC_ASN1Template* templateEntry,
157 SECItem* item, PRBool* match, void* dest) 157 SECItem* item, PRBool* match, void* dest)
158 { 158 {
159 unsigned long kind = 0; 159 unsigned long kind = 0;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 disables type checking, and effectively forbids us from 263 disables type checking, and effectively forbids us from
264 transparently ignoring optional components we aren't aware of */ 264 transparently ignoring optional components we aren't aware of */
265 *match = PR_TRUE; 265 *match = PR_TRUE;
266 return SECSuccess; 266 return SECSuccess;
267 } 267 }
268 268
269 /* first, do a class check */ 269 /* first, do a class check */
270 if ( (tag & SEC_ASN1_CLASS_MASK) != 270 if ( (tag & SEC_ASN1_CLASS_MASK) !=
271 (((unsigned char)kind) & SEC_ASN1_CLASS_MASK) ) 271 (((unsigned char)kind) & SEC_ASN1_CLASS_MASK) )
272 { 272 {
273 #ifdef DEBUG
274 /* this is only to help debugging of the decoder in case of problems */ 273 /* this is only to help debugging of the decoder in case of problems */
275 unsigned char tagclass = tag & SEC_ASN1_CLASS_MASK; 274 /* unsigned char tagclass = tag & SEC_ASN1_CLASS_MASK; */
276 unsigned char expectedclass = (unsigned char)kind & SEC_ASN1_CLASS_MASK; 275 /* unsigned char expectedclass = (unsigned char)kind & SEC_ASN1_CLASS_MA SK; */
277 tagclass = tagclass;
278 expectedclass = expectedclass;
279 #endif
280 *match = PR_FALSE; 276 *match = PR_FALSE;
281 return SECSuccess; 277 return SECSuccess;
282 } 278 }
283 279
284 /* now do a tag check */ 280 /* now do a tag check */
285 if ( ((unsigned char)kind & SEC_ASN1_TAGNUM_MASK) != 281 if ( ((unsigned char)kind & SEC_ASN1_TAGNUM_MASK) !=
286 (tag & SEC_ASN1_TAGNUM_MASK)) 282 (tag & SEC_ASN1_TAGNUM_MASK))
287 { 283 {
288 *match = PR_FALSE; 284 *match = PR_FALSE;
289 return SECSuccess; 285 return SECSuccess;
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 } 646 }
651 647
652 /* new decoder implementation. This is a recursive function */ 648 /* new decoder implementation. This is a recursive function */
653 649
654 static SECStatus DecodeItem(void* dest, 650 static SECStatus DecodeItem(void* dest,
655 const SEC_ASN1Template* templateEntry, 651 const SEC_ASN1Template* templateEntry,
656 SECItem* src, PLArenaPool* arena, PRBool checkTag) 652 SECItem* src, PLArenaPool* arena, PRBool checkTag)
657 { 653 {
658 SECStatus rv = SECSuccess; 654 SECStatus rv = SECSuccess;
659 SECItem temp; 655 SECItem temp;
660 SECItem mark; 656 SECItem mark = {siBuffer, NULL, 0};
661 PRBool pop = PR_FALSE; 657 PRBool pop = PR_FALSE;
662 PRBool decode = PR_TRUE; 658 PRBool decode = PR_TRUE;
663 PRBool save = PR_FALSE; 659 PRBool save = PR_FALSE;
664 unsigned long kind; 660 unsigned long kind;
665 PRBool match = PR_TRUE; 661 PRBool match = PR_TRUE;
666 PRBool optional = PR_FALSE;
667 662
668 PR_ASSERT(src && dest && templateEntry && arena); 663 PR_ASSERT(src && dest && templateEntry && arena);
669 #if 0 664 #if 0
670 if (!src || !dest || !templateEntry || !arena) 665 if (!src || !dest || !templateEntry || !arena)
671 { 666 {
672 PORT_SetError(SEC_ERROR_INVALID_ARGS); 667 PORT_SetError(SEC_ERROR_INVALID_ARGS);
673 rv = SECFailure; 668 rv = SECFailure;
674 } 669 }
675 #endif 670 #endif
676 671
677 if (SECSuccess == rv) 672 if (SECSuccess == rv)
678 { 673 {
679 /* do the template validation */ 674 /* do the template validation */
680 kind = templateEntry->kind; 675 kind = templateEntry->kind;
681 optional = (0 != (kind & SEC_ASN1_OPTIONAL));
682 if (!kind) 676 if (!kind)
683 { 677 {
684 PORT_SetError(SEC_ERROR_BAD_TEMPLATE); 678 PORT_SetError(SEC_ERROR_BAD_TEMPLATE);
685 rv = SECFailure; 679 rv = SECFailure;
686 } 680 }
687 } 681 }
688 682
689 if (SECSuccess == rv) 683 if (SECSuccess == rv)
690 { 684 {
691 #ifdef DEBUG 685 #ifdef DEBUG
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 if (SECSuccess == rv && newsrc.len) 937 if (SECSuccess == rv && newsrc.len)
944 { 938 {
945 rv = SECFailure; 939 rv = SECFailure;
946 PORT_SetError(SEC_ERROR_EXTRA_INPUT); 940 PORT_SetError(SEC_ERROR_EXTRA_INPUT);
947 } 941 }
948 } 942 }
949 943
950 return rv; 944 return rv;
951 } 945 }
952 946
OLDNEW
« nss/lib/util/pkcs11n.h ('K') | « nss/lib/util/pkcs11t.h ('k') | nss/lib/util/secasn1d.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698