bb5638. Check if cert already exists in cache.

pull/25/head
Shawn Webb 13 years ago
parent ee07fcd640
commit 2c2e89e107
  1. 13
      libclamav/crtmgr.c
  2. 2
      libclamav/readdb.c

@ -88,8 +88,21 @@ int crtmgr_add(crtmgr *m, cli_crt *x509) {
i->certSign |= x509->certSign;
i->codeSign |= x509->codeSign;
i->timeSign |= x509->timeSign;
return 0;
}
/* If certs match, we're likely just revoking it */
if (!memcmp(x509->subject, i->subject, sizeof(x509->subject)) &&
!memcmp(x509->issuer, i->issuer, sizeof(x509->issuer)) &&
!memcmp(x509->serial, i->serial, sizeof(x509->serial)) &&
!mp_cmp(&x509->n, &i->n) &&
!mp_cmp(&x509->e, &i->e)) {
if (i->isBlacklisted != x509->isBlacklisted)
i->isBlacklisted = x509->isBlacklisted;
return 0;
}
}
i = cli_malloc(sizeof(*i));

@ -2417,7 +2417,7 @@ static int cli_loadcrt(FILE *fs, struct cl_engine *engine, struct cli_dbio *dbio
goto end;
}
if ((unsigned int)atoi(tokens[CRT_TOKENS]) < cl_retflevel) {
if ((unsigned int)atoi(tokens[CRT_TOKENS]) < cl_retflevel()) {
cli_dbgmsg("cli_ladcrt: Cert %s not loaded (maximum f-level: %s)\n", tokens[0], tokens[CRT_TOKENS]);
continue;
}

Loading…
Cancel
Save