Skip to content

Commit

Permalink
Bug 1342372 - check dbentry->len, r=ttaubert
Browse files Browse the repository at this point in the history
--HG--
extra : rebase_source : ce12237ea08443d7a48cc983ad1a481d7e8a7f0b
  • Loading branch information
franziskuskiefer committed Mar 22, 2017
1 parent f394512 commit 9a32582
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/softoken/legacydb/pcertdb.c
Expand Up @@ -733,6 +733,12 @@ DecodeDBCertEntry(certDBEntryCert *entry, SECItem *dbentry)
entry->derCert.len += lenoff;
}

/* Is data long enough? */
if (dbentry->len < headerlen + entry->derCert.len) {
PORT_SetError(SEC_ERROR_BAD_DATABASE);
goto loser;
}

/* copy the dercert */
entry->derCert.data = pkcs11_copyStaticData(&dbentry->data[headerlen],
entry->derCert.len, entry->derCertSpace, sizeof(entry->derCertSpace));
Expand All @@ -743,6 +749,11 @@ DecodeDBCertEntry(certDBEntryCert *entry, SECItem *dbentry)

/* copy the nickname */
if (nnlen > 1) {
/* Is data long enough? */
if (dbentry->len < headerlen + entry->derCert.len + nnlen) {
PORT_SetError(SEC_ERROR_BAD_DATABASE);
goto loser;
}
entry->nickname = (char *)pkcs11_copyStaticData(
&dbentry->data[headerlen + entry->derCert.len], nnlen,
(unsigned char *)entry->nicknameSpace,
Expand Down

0 comments on commit 9a32582

Please sign in to comment.