diff --git a/features/cellular/framework/mux/cellular_mux.cpp b/features/cellular/framework/mux/cellular_mux.cpp index 2d37c72401..d419aa7aa7 100644 --- a/features/cellular/framework/mux/cellular_mux.cpp +++ b/features/cellular/framework/mux/cellular_mux.cpp @@ -1140,14 +1140,18 @@ void Mux::tx_noretransmit_entry_run() ssize_t Mux::user_data_tx(uint8_t dlci_id, const void* buffer, size_t size) { - MBED_ASSERT(size <= - (MBED_CONF_MUX_BUFFER_SIZE - (FRAME_START_READ_LEN + FRAME_HEADER_READ_LEN + FRAME_TRAILER_LEN))); MBED_ASSERT(buffer != NULL); if (size == 0) { return 0; } + const size_t max_payload_size = (MBED_CONF_MUX_BUFFER_SIZE - + (FRAME_START_READ_LEN + FRAME_HEADER_READ_LEN + FRAME_TRAILER_LEN)); + if (size > max_payload_size) { + size = max_payload_size; + } + _mutex.lock(); ssize_t write_ret;