Skip to content

Commit b871829

Browse files
authored
Merge pull request #5811 from lealem47/zd15184
Async Sniffer: Fix for decryption after second handshake
2 parents 50c5d61 + dd89fe2 commit b871829

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

src/sniffer.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,7 +1454,10 @@ static SnifferServer* GetSnifferServer(IpInfo* ipInfo, TcpInfo* tcpInfo)
14541454
MatchAddr(sniffer->server, ipInfo->dst))
14551455
break;
14561456

1457-
sniffer = sniffer->next;
1457+
if (sniffer->next)
1458+
sniffer = sniffer->next;
1459+
else
1460+
break;
14581461
}
14591462
#else
14601463
(void)ipInfo;
@@ -4732,15 +4735,17 @@ static int DecryptTls(WOLFSSL* ssl, byte* plain, const byte* input,
47324735
int ret = 0;
47334736

47344737
#ifdef WOLFSSL_ASYNC_CRYPT
4735-
ret = wolfSSL_AsyncPop(ssl, &ssl->decrypt.state);
4736-
if (ret != WC_NOT_PENDING_E) {
4737-
/* check for still pending */
4738-
if (ret == WC_PENDING_E)
4739-
return ret;
4738+
if (ssl->decrypt.state != CIPHER_STATE_BEGIN) {
4739+
ret = wolfSSL_AsyncPop(ssl, &ssl->decrypt.state);
4740+
if (ret != WC_NOT_PENDING_E) {
4741+
/* check for still pending */
4742+
if (ret == WC_PENDING_E)
4743+
return ret;
47404744

4741-
ssl->error = 0; /* clear async */
4745+
ssl->error = 0; /* clear async */
47424746

4743-
/* let failures through so CIPHER_STATE_END logic is run */
4747+
/* let failures through so CIPHER_STATE_END logic is run */
4748+
}
47444749
}
47454750
else
47464751
#endif

0 commit comments

Comments
 (0)