Skip to content

Commit

Permalink
[dash] fix DASH ACL Rule protocol use-after-free (sonic-net#2958)
Browse files Browse the repository at this point in the history
[dash] Updated the code to avoid using the vector (protocols) that goes out of scope before its data is used
  • Loading branch information
Yakiv-Huryk authored Nov 22, 2023
1 parent b8841ec commit 2ca3deb
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions orchagent/dash/dashaclgroupmgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,18 +378,16 @@ void DashAclGroupMgr::createRule(DashAclGroup& group, DashAclRule& rule)
attrs.emplace_back();
attrs.back().id = SAI_DASH_ACL_RULE_ATTR_PROTOCOL;

if (rule.m_protocols.size())
{
attrs.back().value.u8list.count = static_cast<uint32_t>(rule.m_protocols.size());
attrs.back().value.u8list.list = rule.m_protocols.data();
}
else
{
auto protocols = all_protocols;
attrs.back().value.u8list.count = static_cast<uint32_t>(protocols.size());
attrs.back().value.u8list.list = protocols.data();
vector<uint8_t> protocols;
if (rule.m_protocols.size()) {
protocols = rule.m_protocols;
} else {
protocols = all_protocols;
}

attrs.back().value.u8list.count = static_cast<uint32_t>(protocols.size());
attrs.back().value.u8list.list = protocols.data();

if (!rule.m_src_prefixes.empty())
{
src_prefixes.insert(src_prefixes.end(),
Expand Down

0 comments on commit 2ca3deb

Please sign in to comment.