forked from wolfSSL/wolfssl
Merge pull request #5594 from julek-wolfssl/zd14813
Do not allow 0 size DtlsMsg
This commit is contained in:
@ -8147,6 +8147,11 @@ DtlsMsg* DtlsMsgNew(word32 sz, byte tx, void* heap)
|
|||||||
DtlsMsg* msg;
|
DtlsMsg* msg;
|
||||||
WOLFSSL_ENTER("DtlsMsgNew()");
|
WOLFSSL_ENTER("DtlsMsgNew()");
|
||||||
|
|
||||||
|
if (sz == 0) {
|
||||||
|
WOLFSSL_MSG("DtlsMsgNew: sz == 0 not allowed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
(void)heap;
|
(void)heap;
|
||||||
msg = (DtlsMsg*)XMALLOC(sizeof(DtlsMsg), heap, DYNAMIC_TYPE_DTLS_MSG);
|
msg = (DtlsMsg*)XMALLOC(sizeof(DtlsMsg), heap, DYNAMIC_TYPE_DTLS_MSG);
|
||||||
|
|
||||||
@ -8422,8 +8427,13 @@ int DtlsMsgSet(DtlsMsg* msg, word32 seq, word16 epoch, const byte* data, byte ty
|
|||||||
if (msg->fragBucketList == NULL) {
|
if (msg->fragBucketList == NULL) {
|
||||||
/* Clean list. Create first fragment. */
|
/* Clean list. Create first fragment. */
|
||||||
msg->fragBucketList = DtlsMsgCreateFragBucket(fragOffset, data, fragSz, heap);
|
msg->fragBucketList = DtlsMsgCreateFragBucket(fragOffset, data, fragSz, heap);
|
||||||
msg->bytesReceived = fragSz;
|
if (msg->fragBucketList != NULL) {
|
||||||
msg->fragBucketListCount++;
|
msg->bytesReceived = fragSz;
|
||||||
|
msg->fragBucketListCount++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MEMORY_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* See if we can expand any existing bucket to fit this new data into */
|
/* See if we can expand any existing bucket to fit this new data into */
|
||||||
@ -8629,7 +8639,6 @@ int DtlsMsgPoolSave(WOLFSSL* ssl, const byte* data, word32 dataSz,
|
|||||||
DtlsMsg* cur = ssl->dtls_tx_msg_list;
|
DtlsMsg* cur = ssl->dtls_tx_msg_list;
|
||||||
|
|
||||||
XMEMCPY(item->raw, data, dataSz);
|
XMEMCPY(item->raw, data, dataSz);
|
||||||
item->sz = dataSz;
|
|
||||||
item->epoch = ssl->keys.dtls_epoch;
|
item->epoch = ssl->keys.dtls_epoch;
|
||||||
item->seq = ssl->keys.dtls_handshake_number;
|
item->seq = ssl->keys.dtls_handshake_number;
|
||||||
item->type = type;
|
item->type = type;
|
||||||
|
Reference in New Issue
Block a user