Merge pull request #5601 from douzzer/20220917-fixes

20220917-fixes
This commit is contained in:
Sean Parkinson
2022-09-19 13:50:25 +10:00
committed by GitHub
5 changed files with 46 additions and 22 deletions

View File

@ -8152,10 +8152,12 @@ DtlsMsg* DtlsMsgNew(word32 sz, byte tx, void* heap)
DtlsMsg* msg; DtlsMsg* msg;
WOLFSSL_ENTER("DtlsMsgNew()"); WOLFSSL_ENTER("DtlsMsgNew()");
#ifndef WOLFSSL_ASYNC_CRYPT
if (sz == 0) { if (sz == 0) {
WOLFSSL_MSG("DtlsMsgNew: sz == 0 not allowed"); WOLFSSL_MSG("DtlsMsgNew: sz == 0 not allowed");
return NULL; return NULL;
} }
#endif
(void)heap; (void)heap;
msg = (DtlsMsg*)XMALLOC(sizeof(DtlsMsg), heap, DYNAMIC_TYPE_DTLS_MSG); msg = (DtlsMsg*)XMALLOC(sizeof(DtlsMsg), heap, DYNAMIC_TYPE_DTLS_MSG);
@ -8386,8 +8388,18 @@ static void DtlsMsgAssembleCompleteMessage(DtlsMsg* msg)
/* frag->padding makes sure we can fit the entire DTLS handshake header /* frag->padding makes sure we can fit the entire DTLS handshake header
* before frag->buf */ * before frag->buf */
dtls = (DtlsHandShakeHeader*)(msg->fragBucketList->buf -
DTLS_HANDSHAKE_HEADER_SZ); /* note the dtls pointer needs to be computed from msg->fragBucketList, not
* from msg->fragBucketList->buf, to avoid a pointerOutOfBounds access
* detected by cppcheck.
*
* also note, the (void *) intermediate cast is necessary to avoid a
* potential -Wcast-align around alignment of DtlsHandShakeHeader exceeding
* alignment of char.
*/
dtls = (DtlsHandShakeHeader*)(void *)((char *)msg->fragBucketList
+ OFFSETOF(DtlsFragBucket,buf)
- DTLS_HANDSHAKE_HEADER_SZ);
msg->fragBucketList = NULL; msg->fragBucketList = NULL;
msg->fragBucketListCount = 0; msg->fragBucketListCount = 0;
@ -19839,6 +19851,8 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr)
ssl->keys.padSz, &processedSize); ssl->keys.padSz, &processedSize);
ssl->buffers.inputBuffer.idx += processedSize; ssl->buffers.inputBuffer.idx += processedSize;
ssl->buffers.inputBuffer.idx += ssl->keys.padSz; ssl->buffers.inputBuffer.idx += ssl->keys.padSz;
if (ret != 0)
return ret;
break; break;
} }
FALL_THROUGH; FALL_THROUGH;

View File

@ -6169,7 +6169,8 @@ int SendTls13ServerHello(WOLFSSL* ssl, byte extMsgType)
{ {
#ifdef WOLFSSL_DTLS13 #ifdef WOLFSSL_DTLS13
if (ssl->options.dtls) { if (ssl->options.dtls) {
ret = Dtls13HashHandshake(ssl, ret = Dtls13HashHandshake(
ssl,
output + Dtls13GetRlHeaderLength(ssl, 0) , output + Dtls13GetRlHeaderLength(ssl, 0) ,
(word16)sendSz - Dtls13GetRlHeaderLength(ssl, 0)); (word16)sendSz - Dtls13GetRlHeaderLength(ssl, 0));
} }

View File

@ -10600,11 +10600,16 @@ int sp_invmod(sp_int* a, sp_int* m, sp_int* r)
else if (err != MP_OKAY) { else if (err != MP_OKAY) {
} }
else { else {
sp_init_size(u, m->used + 1); err = sp_init_size(u, m->used + 1);
sp_init_size(v, m->used + 1); if (err == MP_OKAY)
sp_init_size(b, m->used + 1); err = sp_init_size(v, m->used + 1);
sp_init_size(c, 2 * m->used + 1); if (err == MP_OKAY)
err = sp_init_size(b, m->used + 1);
if (err == MP_OKAY)
err = sp_init_size(c, 2 * m->used + 1);
}
if ((err == MP_OKAY) && !sp_isone(a)) {
if (sp_iseven(m)) { if (sp_iseven(m)) {
/* a^-1 mod m = m + ((1 - m*(m^-1 % a)) / a) */ /* a^-1 mod m = m + ((1 - m*(m^-1 % a)) / a) */
mm = a; mm = a;
@ -16363,10 +16368,14 @@ int sp_gcd(sp_int* a, sp_int* b, sp_int* r)
u = d[0]; u = d[0];
v = d[1]; v = d[1];
t = d[2]; t = d[2];
sp_init_size(u, used); err = sp_init_size(u, used);
sp_init_size(v, used); }
sp_init_size(t, used); if (err == MP_OKAY)
err = sp_init_size(v, used);
if (err == MP_OKAY)
err = sp_init_size(t, used);
if (err == MP_OKAY) {
if (_sp_cmp(a, b) != MP_LT) { if (_sp_cmp(a, b) != MP_LT) {
sp_copy(b, u); sp_copy(b, u);
/* First iteration - u = a, v = b */ /* First iteration - u = a, v = b */