Avoid duplicated callback when error is overriden

This commit is contained in:
Takashi Kojo
2017-08-01 08:40:47 +09:00
committed by Jacob Barthelmeh
parent 92c9ff5f48
commit f690a980bf

View File

@@ -7781,6 +7781,7 @@ typedef struct ProcPeerCertArgs {
int certIdx; int certIdx;
int fatal; int fatal;
int lastErr; int lastErr;
int certErr_ovrdn; /* overriden cert error */
#ifdef WOLFSSL_ALT_CERT_CHAINS #ifdef WOLFSSL_ALT_CERT_CHAINS
int lastCaErr; int lastCaErr;
#endif #endif
@@ -7871,6 +7872,7 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
XMEMSET(args, 0, sizeof(ProcPeerCertArgs)); XMEMSET(args, 0, sizeof(ProcPeerCertArgs));
args->idx = *inOutIdx; args->idx = *inOutIdx;
args->begin = *inOutIdx; args->begin = *inOutIdx;
args->certErr_ovrdn = 0;
#ifdef WOLFSSL_ASYNC_CRYPT #ifdef WOLFSSL_ASYNC_CRYPT
ssl->async.freeArgs = FreeProcPeerCertArgs; ssl->async.freeArgs = FreeProcPeerCertArgs;
#elif defined(WOLFSSL_NONBLOCK_OCSP) #elif defined(WOLFSSL_NONBLOCK_OCSP)
@@ -8994,7 +8996,7 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
} }
#ifdef WOLFSSL_ALWAYS_VERIFY_CB #ifdef WOLFSSL_ALWAYS_VERIFY_CB
else { else {
if (ssl->verifyCallback) { if (ssl->verifyCallback && !args->certErr_ovrdn) {
int ok; int ok;
store->error = ret; store->error = ret;