Fix for async TLS v1.3 with multiple WC_PENDING_E on client_hello and server_hello processing. Fix for not aligned NUMA.

This commit is contained in:
David Garske
2021-10-22 16:28:46 -07:00
parent 34095dfd38
commit eb56b652ca
3 changed files with 17 additions and 7 deletions

View File

@ -12020,8 +12020,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
args->dCertInit = 0;
/* once again */
ret = ProcessPeerCertParse(ssl, args, CERT_TYPE,
!ssl->options.verifyNone ? VERIFY : NO_VERIFY,
&subjectHash, &alreadySigner);
!ssl->options.verifyNone ? VERIFY : NO_VERIFY,
&subjectHash, &alreadySigner);
} else
ret = ASN_NO_SIGNER_E;
}
@ -12235,8 +12235,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
args->dCertInit = 0;
/* once again */
ret = ProcessPeerCertParse(ssl, args, CERT_TYPE,
!ssl->options.verifyNone ? VERIFY : NO_VERIFY,
&subjectHash, &alreadySigner);
!ssl->options.verifyNone ? VERIFY : NO_VERIFY,
&subjectHash, &alreadySigner);
} else
ret = ASN_NO_SIGNER_E;
}

View File

@ -3276,8 +3276,13 @@ int DoTls13ServerHello(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
ret = wolfSSL_AsyncPop(ssl, &ssl->options.asyncState);
if (ret != WC_NOT_PENDING_E) {
/* Check for error */
if (ret < 0)
if (ret < 0) {
if (ret == WC_PENDING_E) {
/* Mark message as not received so it can process again */
ssl->msgsReceived.got_server_hello--;
}
return ret;
}
}
else
#endif
@ -4533,8 +4538,9 @@ int DoTls13ClientHello(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
ret = wolfSSL_AsyncPop(ssl, &ssl->options.asyncState);
if (ret != WC_NOT_PENDING_E) {
/* Check for error */
if (ret < 0)
return ret;
if (ret < 0) {
goto exit_dch;
}
}
else
#endif

View File

@ -1783,6 +1783,10 @@ void* wc_CryptoCb_IntelQaRealloc(void *ptr, size_t size, void* heap, int type
if (newIsNuma == 0 && ptrIsNuma == 0) {
allocNew = 1;
}
/* confirm input is aligned, otherwise allocate new */
else if (((size_t)ptr % WOLF_HEADER_ALIGN) != 0) {
allocNew = 1;
}
/* if matching NUMA type and size fits, use existing */
else if (newIsNuma == ptrIsNuma && header->size >= size) {