mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
@ -8152,10 +8152,12 @@ DtlsMsg* DtlsMsgNew(word32 sz, byte tx, void* heap)
|
||||
DtlsMsg* msg;
|
||||
WOLFSSL_ENTER("DtlsMsgNew()");
|
||||
|
||||
#ifndef WOLFSSL_ASYNC_CRYPT
|
||||
if (sz == 0) {
|
||||
WOLFSSL_MSG("DtlsMsgNew: sz == 0 not allowed");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
(void)heap;
|
||||
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
|
||||
* 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->fragBucketListCount = 0;
|
||||
@ -19839,6 +19851,8 @@ int ProcessReplyEx(WOLFSSL* ssl, int allowSocketErr)
|
||||
ssl->keys.padSz, &processedSize);
|
||||
ssl->buffers.inputBuffer.idx += processedSize;
|
||||
ssl->buffers.inputBuffer.idx += ssl->keys.padSz;
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
FALL_THROUGH;
|
||||
|
@ -6169,7 +6169,8 @@ int SendTls13ServerHello(WOLFSSL* ssl, byte extMsgType)
|
||||
{
|
||||
#ifdef WOLFSSL_DTLS13
|
||||
if (ssl->options.dtls) {
|
||||
ret = Dtls13HashHandshake(ssl,
|
||||
ret = Dtls13HashHandshake(
|
||||
ssl,
|
||||
output + Dtls13GetRlHeaderLength(ssl, 0) ,
|
||||
(word16)sendSz - Dtls13GetRlHeaderLength(ssl, 0));
|
||||
}
|
||||
|
@ -10600,11 +10600,16 @@ int sp_invmod(sp_int* a, sp_int* m, sp_int* r)
|
||||
else if (err != MP_OKAY) {
|
||||
}
|
||||
else {
|
||||
sp_init_size(u, m->used + 1);
|
||||
sp_init_size(v, m->used + 1);
|
||||
sp_init_size(b, m->used + 1);
|
||||
sp_init_size(c, 2 * m->used + 1);
|
||||
err = sp_init_size(u, m->used + 1);
|
||||
if (err == MP_OKAY)
|
||||
err = sp_init_size(v, 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)) {
|
||||
/* a^-1 mod m = m + ((1 - m*(m^-1 % a)) / a) */
|
||||
mm = a;
|
||||
@ -16363,10 +16368,14 @@ int sp_gcd(sp_int* a, sp_int* b, sp_int* r)
|
||||
u = d[0];
|
||||
v = d[1];
|
||||
t = d[2];
|
||||
sp_init_size(u, used);
|
||||
sp_init_size(v, used);
|
||||
sp_init_size(t, used);
|
||||
err = sp_init_size(u, 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) {
|
||||
sp_copy(b, u);
|
||||
/* First iteration - u = a, v = b */
|
||||
|
Reference in New Issue
Block a user