Bug 74343 - handle CRLs > 64K

git-svn-id: svn://10.0.0.236/branches/NSS_3_3_BRANCH@100807 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
ddrinan%netscape.com
2001-08-10 21:15:39 +00:00
parent 863776921c
commit aa1ac6a3d8

View File

@@ -34,7 +34,7 @@
/*
* Permanent Certificate database handling code
*
* $Id: pcertdb.c,v 1.16 2001-07-11 23:57:01 relyea%netscape.com Exp $
* $Id: pcertdb.c,v 1.16.2.1 2001-08-10 21:15:39 ddrinan%netscape.com Exp $
*/
#include "prtime.h"
@@ -873,14 +873,8 @@ DecodeDBCrlEntry(certDBEntryRevocation *entry, SECItem *dbentry)
nnlen = ( ( dbentry->data[2] << 8 ) | dbentry->data[3] );
if ( ( entry->derCrl.len + nnlen + DB_CRL_ENTRY_HEADER_LEN )
!= dbentry->len) {
/* CRL entry is greater than 64 K. Hack to make this continue to work */
if (dbentry->len >= (0xffff - DB_CRL_ENTRY_HEADER_LEN) - nnlen) {
entry->derCrl.len =
(dbentry->len - DB_CRL_ENTRY_HEADER_LEN) - nnlen;
} else {
PORT_SetError(SEC_ERROR_BAD_DATABASE);
goto loser;
}
PORT_SetError(SEC_ERROR_BAD_DATABASE);
goto loser;
}
/* copy the dercert */