mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-30 04:17:31 +09:00
Update NSS
This commit is contained in:
parent
6066cc36cd
commit
2706ef696d
2 changed files with 14 additions and 8 deletions
|
|
@ -515,6 +515,7 @@ lg_init(SDB **pSdb, int flags, NSSLOWCERTCertDBHandle *certdbPtr,
|
||||||
lgdb_p->hashTable = PL_NewHashTable(64, lg_HashNumber, PL_CompareValues,
|
lgdb_p->hashTable = PL_NewHashTable(64, lg_HashNumber, PL_CompareValues,
|
||||||
SECITEM_HashCompare, NULL, 0);
|
SECITEM_HashCompare, NULL, 0);
|
||||||
if (lgdb_p->hashTable == NULL) {
|
if (lgdb_p->hashTable == NULL) {
|
||||||
|
PR_DestroyLock(lgdb_p->dbLock);
|
||||||
goto loser;
|
goto loser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -546,12 +547,6 @@ loser:
|
||||||
PORT_Free(sdb);
|
PORT_Free(sdb);
|
||||||
}
|
}
|
||||||
if (lgdb_p) {
|
if (lgdb_p) {
|
||||||
if (lgdb_p->dbLock) {
|
|
||||||
PR_DestroyLock(lgdb_p->dbLock);
|
|
||||||
}
|
|
||||||
if (lgdb_p->hashTable) {
|
|
||||||
PL_HashTableDestroy(lgdb_p->hashTable);
|
|
||||||
}
|
|
||||||
PORT_Free(lgdb_p);
|
PORT_Free(lgdb_p);
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
|
|
|
||||||
|
|
@ -1114,7 +1114,7 @@ sec_asn1d_prepare_for_contents(sec_asn1d_state *state)
|
||||||
* inspection, too) then move this code into the switch statement
|
* inspection, too) then move this code into the switch statement
|
||||||
* below under cases SET_OF and SEQUENCE_OF; it will be cleaner.
|
* below under cases SET_OF and SEQUENCE_OF; it will be cleaner.
|
||||||
*/
|
*/
|
||||||
PORT_Assert(state->underlying_kind == SEC_ASN1_SET_OF || state->underlying_kind == SEC_ASN1_SEQUENCE_OF || state->underlying_kind == (SEC_ASN1_SEQUENCE_OF | SEC_ASN1_DYNAMIC) || state->underlying_kind == (SEC_ASN1_SEQUENCE_OF | SEC_ASN1_DYNAMIC));
|
PORT_Assert(state->underlying_kind == SEC_ASN1_SET_OF || state->underlying_kind == SEC_ASN1_SEQUENCE_OF || state->underlying_kind == (SEC_ASN1_SET_OF | SEC_ASN1_DYNAMIC) || state->underlying_kind == (SEC_ASN1_SEQUENCE_OF | SEC_ASN1_DYNAMIC));
|
||||||
if (state->contents_length != 0 || state->indefinite) {
|
if (state->contents_length != 0 || state->indefinite) {
|
||||||
const SEC_ASN1Template *subt;
|
const SEC_ASN1Template *subt;
|
||||||
|
|
||||||
|
|
@ -2463,7 +2463,18 @@ sec_asn1d_parse_end_of_contents(sec_asn1d_state *state,
|
||||||
|
|
||||||
if (state->pending == 0) {
|
if (state->pending == 0) {
|
||||||
state->place = afterEndOfContents;
|
state->place = afterEndOfContents;
|
||||||
state->endofcontents = PR_TRUE;
|
/* These end-of-contents octets either terminate a SEQUENCE, a GROUP,
|
||||||
|
* or a constructed string. The SEQUENCE case is unique in that the
|
||||||
|
* state parses its own end-of-contents octets and therefore should not
|
||||||
|
* have its `endofcontents` flag set. We identify the SEQUENCE case by
|
||||||
|
* checking whether the child state's template is pointing at a
|
||||||
|
* template terminator (see `sec_asn1d_next_in_sequence`).
|
||||||
|
*/
|
||||||
|
if (state->child && state->child->theTemplate->kind == 0) {
|
||||||
|
state->endofcontents = PR_FALSE;
|
||||||
|
} else {
|
||||||
|
state->endofcontents = PR_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue