mac_pdu_nr: add error handling to init_tx() method

check provided byte_buffer and return error if it's not valid
This commit is contained in:
Andre Puschmann 2021-08-30 18:01:42 +02:00
parent 4ef1ac2649
commit 9bf74843f6
3 changed files with 11 additions and 3 deletions

View File

@ -128,7 +128,7 @@ public:
const mac_sch_subpdu_nr& get_subpdu(const uint32_t& index); const mac_sch_subpdu_nr& get_subpdu(const uint32_t& index);
bool is_ulsch(); bool is_ulsch();
void init_tx(byte_buffer_t* buffer_, uint32_t pdu_len_, bool is_ulsch_ = false); int init_tx(byte_buffer_t* buffer_, uint32_t pdu_len_, bool is_ulsch_ = false);
void init_rx(bool ulsch_ = false); void init_rx(bool ulsch_ = false);
// Add SDU or CEs to PDU // Add SDU or CEs to PDU

View File

@ -334,13 +334,18 @@ bool mac_sch_pdu_nr::is_ulsch()
return ulsch; return ulsch;
} }
void mac_sch_pdu_nr::init_tx(byte_buffer_t* buffer_, uint32_t pdu_len_, bool ulsch_) int mac_sch_pdu_nr::init_tx(byte_buffer_t* buffer_, uint32_t pdu_len_, bool ulsch_)
{ {
if (buffer_ == nullptr || buffer_->msg == nullptr) {
logger.error("Invalid buffer");
return SRSRAN_ERROR;
}
buffer = buffer_; buffer = buffer_;
subpdus.clear(); subpdus.clear();
pdu_len = pdu_len_; pdu_len = pdu_len_;
remaining_len = pdu_len_; remaining_len = pdu_len_;
ulsch = ulsch_; ulsch = ulsch_;
return SRSRAN_SUCCESS;
} }
void mac_sch_pdu_nr::init_rx(bool ulsch_) void mac_sch_pdu_nr::init_rx(bool ulsch_)

View File

@ -111,7 +111,10 @@ int ue_nr::generate_pdu(srsran::byte_buffer_t* pdu, uint32_t grant_size)
{ {
std::lock_guard<std::mutex> lock(mutex); std::lock_guard<std::mutex> lock(mutex);
mac_pdu_dl.init_tx(pdu, grant_size); if (mac_pdu_dl.init_tx(pdu, grant_size) != SRSRAN_SUCCESS) {
logger.error("Couldn't initialize MAC PDU buffer");
return SRSRAN_ERROR;
}
// read RLC PDU // read RLC PDU
ue_rlc_buffer->clear(); ue_rlc_buffer->clear();