Skip to content

Commit a280948

Browse files
committed
plugins: mcumgr: Fix not checking full message size against MTU
1 parent 242e83e commit a280948

3 files changed

Lines changed: 6 additions & 6 deletions

File tree

plugins/mcumgr/smp_group.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ class smp_group : public QObject
109109

110110
bool check_message_before_send(smp_message *tmp_message)
111111
{
112-
if (tmp_message->contents().length() > processor->max_message_data_size(smp_mtu))
112+
if (tmp_message->data()->length() > processor->max_message_data_size(smp_mtu))
113113
{
114114
//Message is larger than the transport provides
115-
QString response = QString("Message too large for transport, ") % QString::number(tmp_message->contents().length()) % " vs " % QString::number(processor->max_message_data_size(smp_mtu)) % " bytes";
115+
QString response = QString("Message too large for transport, ") % QString::number(tmp_message->data()->length()) % " vs " % QString::number(processor->max_message_data_size(smp_mtu)) % " bytes";
116116

117117
delete tmp_message;
118118
cleanup();

plugins/mcumgr/smp_group_fs_mgmt.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,8 +848,8 @@ bool smp_group_fs_mgmt::upload_chunk()
848848
tmp_message->writer()->append(file_upload_area);
849849
tmp_message->writer()->append("data");
850850

851-
//CBOR element header is 2 bytes with 1 byte end token
852-
max_size = max_size - tmp_message->size() - 3;
851+
//CBOR element header is 2 bytes with 1 byte end token for byte string data, have to include 1 byte header and 4 bytes data for 'data' element too
852+
max_size = max_size - tmp_message->size() - 3 - 5;
853853
remaining_file_size = local_file_size - local_file.pos();
854854
if (max_size > remaining_file_size)
855855
{

plugins/mcumgr/smp_group_img_mgmt.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,8 +980,8 @@ log_error() << "Going in circles...";
980980
tmp_message->writer()->append(this->file_upload_area);
981981
tmp_message->writer()->append("data");
982982

983-
//CBOR element header is 2 bytes with 1 byte end token
984-
max_size = max_size - tmp_message->size() - 3;
983+
//CBOR element header is 2 bytes with 1 byte end token for byte string data, have to include 1 byte header and 4 bytes data for 'data' element too
984+
max_size = max_size - tmp_message->size() - 3 - 5;
985985

986986
tmp_message->writer()->append(this->file_upload_data.mid(this->file_upload_area, max_size));
987987

0 commit comments

Comments
 (0)