From 00d79868c1ec312e2d16beb2b1177611531ec861 Mon Sep 17 00:00:00 2001 From: Gabriel Ferreira Date: Thu, 26 Aug 2021 15:21:46 -0300 Subject: [PATCH] lte: (merges !703) Fix global-buffer-overflow when nprb is equal to zero --- src/lte/model/lte-amc.cc | 4 ++-- src/lte/model/tdmt-ff-mac-scheduler.cc | 6 ++++-- src/lte/model/tdtbfq-ff-mac-scheduler.cc | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lte/model/lte-amc.cc b/src/lte/model/lte-amc.cc index ee122bec3..ae7f32230 100644 --- a/src/lte/model/lte-amc.cc +++ b/src/lte/model/lte-amc.cc @@ -297,7 +297,7 @@ LteAmc::GetDlTbSizeFromMcs (int mcs, int nprb) NS_LOG_FUNCTION (mcs); NS_ASSERT_MSG (mcs < 29, "MCS=" << mcs); - NS_ASSERT_MSG (nprb < 111, "NPRB=" << nprb); + NS_ASSERT_MSG (nprb > 0 && nprb < 111, "NPRB=" << nprb); int itbs = McsToItbsDl[mcs]; return (TransportBlockSizeTable[nprb - 1][itbs]); @@ -309,7 +309,7 @@ LteAmc::GetUlTbSizeFromMcs (int mcs, int nprb) NS_LOG_FUNCTION (mcs); NS_ASSERT_MSG (mcs < 29, "MCS=" << mcs); - NS_ASSERT_MSG (nprb < 111, "NPRB=" << nprb); + NS_ASSERT_MSG (nprb > 0 && nprb < 111, "NPRB=" << nprb); int itbs = McsToItbsUl[mcs]; return (TransportBlockSizeTable[nprb - 1][itbs]); diff --git a/src/lte/model/tdmt-ff-mac-scheduler.cc b/src/lte/model/tdmt-ff-mac-scheduler.cc index d06460693..719193d1a 100644 --- a/src/lte/model/tdmt-ff-mac-scheduler.cc +++ b/src/lte/model/tdmt-ff-mac-scheduler.cc @@ -942,8 +942,10 @@ TdMtFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sch } // end for RBG free } // end for RBGs - - allocationMap.insert (std::pair > ((*itMax), tempMap)); + if (tempMap.size() > 0) + { + allocationMap.insert (std::pair > ((*itMax), tempMap)); + } } // generate the transmission opportunities by grouping the RBGs of the same RNTI and diff --git a/src/lte/model/tdtbfq-ff-mac-scheduler.cc b/src/lte/model/tdtbfq-ff-mac-scheduler.cc index f46f407d2..e63833958 100644 --- a/src/lte/model/tdtbfq-ff-mac-scheduler.cc +++ b/src/lte/model/tdtbfq-ff-mac-scheduler.cc @@ -1079,7 +1079,10 @@ TdTbfqFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::S tempMap.push_back (i); rbgMap.at (i) = true; } - allocationMap.insert (std::pair > ((*itMax).first, tempMap)); + if (tempMap.size() > 0) + { + allocationMap.insert (std::pair > ((*itMax).first, tempMap)); + } }